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

這是有效的C代碼嗎?我的範圍是什麼?在「for」條件中聲明的變量的範圍是什麼?

+0

*某些*編譯器可能認爲這是無效的代碼,因爲有2個無限循環使第二個無法訪問。 –

+0

「這是有效的C代碼嗎?」 - 'void main(void)'支持依賴於實現。 – milleniumbug

回答

0

C99 6.8.5.3 for語句

聲明

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

的行爲如下:表達式表達-2是控制表達式即前 評價每次執行循環體。表達式-3是 ,在循環體的每次執行後評估爲空表達式。 如果子句-1是一個 聲明,它聲明的任何變量的作用域是整個循環的其餘部分,包括其他兩個表達式;在控制表達式的第一次評估之前按照執行順序到達。如果子句-1是一個表達式,則在對控制表達式進行第一次評估之前,它將被評估爲一個無效表達式。

另請注意,此功能僅在自C99以後纔有效。換句話說,您不能在C89中的for循環的第一個語句中聲明變量。

相關問題