Сообщение от impersonalis
это по какому стандарту? И в каких компиляторах это соблюдено?
|
Насчет стандарта незнаю, но студийный компилятор ( 2003 - 2008 ) и GCC выкидывают предупреждение на любые константные выражения
в for( ; ; ) выражений нет, потому молчит.
Сообщение от Den
Я провёл собственное™ независимое™ раследование™:
IDE - Code::Blocks 10.05
компилятор c++ - gcc 4.4.5
1)
C++
int main()
{
while(true)
{
}
return 0;
}
при дизасемблинге (дизасемблиировании?) функции main стандартными средствами IDE поучаем:
0x8048464 push ebp
0x8048465 mov ebp,esp
0x8048467 jmp 0x8048467 <main()+3>
2)
C++
int main()
{
for(;;)
{
}
return 0;
}
при дизасемблинге (дизасемблиировании?) функции main стандартными средствами IDE поучаем:
0x8048464 push ebp
0x8048465 mov ebp,esp
0x8048467 jmp 0x8048467 <main()+3>
Вывод: одно и тоже 
|
Лол
Во-первых такой пустой цикл любой компилятор (имеющий в составе оптимизатор) выбросит, во-вторых все бесконечные циклы одинаковы (по получаемому коду) в пределах одного компилятора (да даже логически - обычный jmp переход), поэтому смысла в сравнении сгенерированного кода нет.