Точки следования
От: BreakPointMAN Россия http://127.0.0.1
Дата: 30.04.06 17:03
Оценка:
Кто хорошо разбирается в данной теме?

Корректно ли такое выражение:

n=(n=rand()%4)>1?n-1:n-2;



а такое:

n=(n=(rand()/(RAND_MAX+1)>>2))-1-1*(n<=1)


иии... почему? Если можно, прошу объяснить... а не просто ответить: "да" или "нет"...


Первое выражение мне кажется корректным, хотя я могу сильно ошибаться. У Алёны C++ про точки следования написано, в частности, следующее:

Где находятся точки следования
...
4. (1.9/18) После первого выражения (здесь оно называется 'a') в следующих конструкциях:
...
a ? b : c

Вычисление здесь идет слева направо. То есть левое выражение (по имени 'a') вычисляется и все побочные эффекты от такого вычисления завершаются. Потом, если все значение всего выражения известно, правое выражение не вычисляется, иначе вычисляется.
...

Присваивание переменной n в правой половине оператора присваивания "(n=rand()%4)" является выражением, находящимся в самой первой части условной оперции... на этом мысль заканчивается...
У меня есть конкретное предложение:
Заменить все стекла на витражи,
Чтобы видеть в окне не свое отражение,
А цветные картинки и миражи...

"Стекла" (c) Зимовье зверей
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.