C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Не бейте, наверное не по адресу, но...
Daisy
Отправлено: 10.08.2006, 16:01


Дежурный стрелочник

Группа: Участник
Сообщений: 36



int x = 2, y = 5, z;
z = x+++y;

Как объяснить логически, какой плюс за каким вычисляется?
И почему
так
z = (x++) + y;
а не так
z = x+(++y);
?
Ещё раз прощу прощения

sad.gif
Guest
Отправлено: 10.08.2006, 16:15


Не зарегистрирован







CODE

Associativity and Precedence of Operators
Operators                                         Associativity
()  []   ->  ::  .                                left to right
!   ~    +   —   ++  --  &  * sizeof  new delete  right to left
.*  ->*                                           left to right
*   /    %                                        left to right
+   —                                             left to right
<<  >>                                            left to right
<   <=   >   >=                                   left to right
==  !=                                            left to right
&                                                 left to right
^                                                 left to right
|                                                 left to right
&&                                                left to right
||                                                right to left
?:                                                left to right
=   *=   /=  %=  +=  -=  &=  ^=  |=  <<=  >>=     right to left
,                                                 left to right
Daisy
Отправлено: 10.08.2006, 16:18


Дежурный стрелочник

Группа: Участник
Сообщений: 36



Это я в книжке вижу.
Мне непонятен как работает механизм справа на лево.
Guest
Отправлено: 10.08.2006, 16:30


Не зарегистрирован







Вот так
было 1 2 3
извлекаем в порядке 3 2 1
Daisy
Отправлено: 10.08.2006, 16:39


Дежурный стрелочник

Группа: Участник
Сообщений: 36



А на примере с плюсами?
x+++y
Где тут что извлекаем? Путаюсь я в этом. Можно конечно скобки поставить, но очень понять хочется.
Guest
Отправлено: 10.08.2006, 16:54


Не зарегистрирован







CODE

операнд операторы               операнд
x             +(1)   +(2)   +(3)    y

Сначала +(3)
Осталось x +(1) +(2) плюс y
затем ++

Но, действительно, в реальной жизни лучше ставить скобки.
Daisy
Отправлено: 10.08.2006, 17:22


Дежурный стрелочник

Группа: Участник
Сообщений: 36



ЧуднО как-то...
сначала то на самом деле ++, потому как оно в скобках...
а если справа налево то (++y) а потом x+..
Но если как-то исковеркать логику под программистскую, но понятно, но это понятие очень зыбкое. Наверное придется запомнить :-))
Спасибо!

Вернуться в Вопросы программирования в C++Builder