БлогNot. ++i + ++i

++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 [8725 просмотров]


теги: c++ программирование

показать комментарии (1)