15:32

душа моя, я с тебя шизею
C++
В чем разница между:
if (a==b==c))
и
if ((a==b)&(a==c)&(b==c))

В первом случае выходит, что 2=2=1, а во втором вроде бы работает. Тип переменных int.

Комментарии
07.12.2009 в 16:20

Don't stop the music.
edge
При вычислении выражения 2 == 2 == 1 происходит следующее:
Вычисляется булевое выражение (2 == 2), оно равно 1 (true)
Вычисляется выражение ((2 == 2) == 1) => (1 == 1) = 1 (true).
07.12.2009 в 16:46

149ea694a792f3ad2caaf77077a0df58 Спорящая с богом
Слушатель
Точнее булево значение true неявно приводится к int и даёт в результате 1 - для совместимости с С, в котором не было встроенного типа bool.
07.12.2009 в 16:49

Don't stop the music.
07.12.2009 в 17:11

душа моя, я с тебя шизею
Прикольно :)