Какой смысл выводить предупреждение компилятора для «while (true)» и не выдавать предупреждение для «for ( ;;) ”?

Когда я компилирую код C ++ с Visual C ++ 9 с «уровнем предупреждения 4», следующее:

while( true ) {
   //loop body with break on certain condition
}

и следующее:

for( ; true; ) {
   //same loop body
}

оба триггера C4127: условное выражение является константой предупреждение, но следующее:

for( ; ; ) {
   //same loop body
}

компилируется без предупреждения.

Почему эта разница, особенно между вторым и третьим вариантом?

10
задан sharptooth 10 March 2011 в 10:04
поделиться