++i + ++i
Всплыло в разговоре одно из уже классических для C++ обсуждений :) Сколько даст выражение на C++ из заголовка статьи для i=5
? На самом деле, с точки зрения стандарта, результат не определен, т.к. оптимизирующий компилятор может переупорядочивать операции, скажем, стоящие стоящие справа от знака =
. Поэтому в классическом Borland C++ 3.1 вот эта программа
#include <stdio.h> void main() { int i=5; printf ("\n%d",++i + ++i); }
выдаст ответ 13
, а вот эта (отличается только тем, что выражение перед выводом присвоено переменной)
#include <stdio.h> void main() { int i=5; i = ++i + ++i; printf ("\n%d",i); }
уже 14
- причём, списать всё на оптимизацию нельзя, т.к. настройка по умолчанию - "No optimization".
Статья на Lurkmore - обсуждение нецензурное :)
07.11.2010, 22:28 [8771 просмотр]