Daisy |
Отправлено: 10.08.2006, 16:01 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 36
|
int x = 2, y = 5, z;
z = x+++y;
Как объяснить логически, какой плюс за каким вычисляется?
И почему
так
z = (x++) + y;
а не так
z = x+(++y);
?
Ещё раз прощу прощения
|
|
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+..
Но если как-то исковеркать логику под программистскую, но понятно, но это понятие очень зыбкое. Наверное придется запомнить :-))
Спасибо! |
|