2015-10-27 83 views
-4

我很困惑..它打印第一個c後,它是1,然後c變成了2,然後它應該打印c,這是2 .. int c = 1;爲什麼第一個是無限循環?

while (c<=10) 
    printf("%d\n", c); 
    c = c + 1; 

while (c<=10) 
{ 
    printf("%d\n", c); 
    c = c + 1; 
} 
+1

在printf(「%d \ n」,c)附近缺少'{}'; c = c + 1;' – chux

回答

3

的值當後面沒有

{ 
} 

While循環下面的語句是隻認爲是循環 所以你的一部分由於while循環運行的條件始終爲真,因此代碼將無限期地運行while循環的while循環 用花括號括住print和increment語句!

+0

下一步*聲明*,而不是*行*。循環的主體總是一個語句 - 只是這個語句通常是一個複合語句,即包含在'{...}'中的幾個語句。 – Caleb

+0

@Caleb是真的! –

+0

謝謝!這很清楚! –

0

這是因爲周圍有縮進塊沒有花括號,所以只有printf是同時的一部分。

0

對於沒有大括號的while循環,它在while循環之後使用單個語句。

因此,在第一個while循環中,while只接受printf語句。

如果將它括在大括號中,它將作爲一個語句塊。如果不包含在花括號中,則只需要一條語句。

因此,它不會增加C.

0

這是因爲如果你不使用{}的同時APPLIS只在第一行,那你有什麼樣

while (c<=10) 
    printf("%d\n", c); 

C從不改變,循環將永遠運行下去

0

你是唯一循環打印語句並且變量不會遞增。

c = c + 1; 

未調用。 { }定義了while循環的範圍而不是製表符。

0

變化:

while (c<=10) 
printf("%d\n", c); 
c = c + 1; 

到:

while (c<=10){ 
    printf("%d\n", c); 
    c = c + 1; 
} 

的原因是,如果一段時間後沒有括號,那麼只有第一個指令執行完成後正確的。