P.S. Я не несу никакой ответственности за возможные тяжкие увечья, помутнение рассудка, массовые разрушения и другие катаклизмы, к которым может привести использование этого куска кода.
2 Eddy_Em
[quote]
Имеется соответствующая операция && для AND. Выражения, связанныеоперациями && или ||, рассматриваются слева на право, и при этомгарантируется, что оценивание выражений будет прекращено, как толькостанет ясно, является ли все выражение истинным или ложным. Так, если'c' оказывается пробелом, то нет никакой необходимости проверять,является ли 'c' символом новой строки или табуляции, и такие проверкидействительно не делаются. В данном случае это не имеет принципиальногозначения, но, как мы скоро увидим, в более сложных ситуациях этаособенность языка весьма существенна.
[/quote]
Я 20 минут потратил, чтобы это найти. В следующий раз проверяй что-нибудь прежде, чем сказать.
Ну вот 6.5.13 часть C99 гласит:
Unlike the bitwise binary & operator, the && operator guarantees left-to-right evaluation;
there is a sequence point after the evaluation of the first operand. If the first operand
compares equal to 0, the second operand is not evaluated.
5.1.2.3:
Accessing a volatile object, modifying an object, modifying a file, or calling a function
that does any of those operations are all side effects,11) which are changes in the state of
the execution environment. Evaluation of an expression may produce side effects. At
certain specified points in the execution sequence called sequence points, all side effects
of previous evaluations shall be complete and no side effects of subsequent evaluations
shall have taken place. (A summary of the sequence points is given in annex C.)