雖然for循環的基本結構是喜歡 -
for(initialization; condition; increment or decrement)
但在其核心部分的「條件」部分被處理僅來控制循環行爲。所以,如果其他兩個部分在語法上是正確的,那麼編譯器不會產生任何錯誤。
因爲,x+1
是一個有效的C語句和x
的是不會改變,因此會去一個無限循環的條件[x <= 100 => 0 <= 100
]是永遠真實的價值。
同樣,當單獨使用時,x++
或++x
均被視爲x = x + 1
。但是,x++
實際上是後增量運算符,而++x
是預增運算符。這意味着,與++x
,x
的值將先增加,然後分配到x
。而x
的當前值將用於x++
中的全部陳述,然後x
將遞增並分配新值。請看下面的示例 -
#include<stdio.h>
void main()
{
int x=5;
/* Post & Pre-Increment used independently */
x++;
printf("x : %d", x);
++x;
printf("\nx : %d", x);
/* Used with printf() statement */
printf("\nPre-increment of x: %d", ++x);
printf("\nPost-increment of x: %d", x++);
printf("\nPost-increment effect on x: %d", x);
}
輸出:
x : 6
x : 7
Pre-increment of x: 8
Post-increment of x: 8
Post-increment effect on x: 9
我希望我的解釋讓你們明白,如果還沒有,你可以回答我。
「爲什麼編譯器不會產生這樣的錯誤」爲什麼要這樣呢? 'x + 1'是一個完美有效的表達。它恰好沒有你想要的效果。如果警告已啓用,我的編譯器會爲它發出警告。 – hvd
此問題不是要求輸入驗證碼。提問者想知道爲什麼某段代碼不起作用。當初學者問爲什麼某些代碼不像預期的那樣行事時,對於更有經驗的編程人員來說這可能是簡單的。但初學者至少已經嘗試了一些東西,並要求瞭解原因。我不認爲這是題外話? – verbose
我很傷心。這是半合法的。假設我真的明白了,答案是兩者同樣可用。但是最好找到一本解釋x ++是x + = 1的簡短手冊的教科書。我會說仍然是主題。不是一個問題。回到這本書,年輕人。 –