2013-04-18 3 views
0
void main(void){ 
    for(int i;;); 
    for(int i;;); 
} 

Действительно ли это код C? Какова область действия i?Какова область переменных, объявленных в состоянии «для»?

+0

* Некоторый * компилятор может считать это недопустимым кодом, так как существует 2 бесконечных цикла, что делает второй недоступным. –

+0

«Действительно ли это C-код?» - 'void main (void)' поддержка зависит от реализации. – milleniumbug

ответ

0

С99 6.8.5.3 для постановки

Изложение

for (clause-1 ;expression-2 ;expression-3)statement 

ведет себя следующим образом: Выражение выражение-2 является контролирующим выражение, которое вычисляется перед каждое выполнение тела цикла. Выражение-выражение оценивается как выражение void после каждого выполнения тела цикла. Если предложение-1 представляет собой объявление , область видимости любых переменных, которые она объявляет, является остатком декларации и весь цикл, включая два других выражения; достигается в порядке выполнения до первой оценки управляющего выражения. Если предложение-1 является выражением, оно оценивается как выражение void перед первой оценкой контролирующего выражения.

Также обратите внимание, что эта функция действительна только с C99. Другими словами, вы не можете объявить переменную в первом выражении в цикле for на C89.

Смежные вопросы