在這種情況下輸出為 1
int main() {
int i = 500;
while( (i ) != 0 );
printf("%d\n", i);
return;
}
在這種情況下輸出為 0
int main() {
int i = 500;
while( (i=i 1) != 0 );
printf("%d\n", i);
return;
}
我不確定為什么在每種情況下都得到不同的輸出我的意思是為什么在第一種情況下為 1 而在第二種情況下為 0
uj5u.com熱心網友回復:
對于初學者來說,這兩個程式都有未定義的行為。不要將變數 i 宣告為有符號整數型別int,而應將其宣告為無符號整數型別unsigned int以使程式正確。
這個while回圈
while( (i ) != 0 );
當運算式i 等于時停止迭代0。所以當變數i等于時0回圈停止。但是由于后綴增量運算子,它的值會增加并等于1.
根據 C 標準(6.5.2.4 后綴遞增和遞減運算子)
2 后綴 運算子的結果是運算元的值。作為副作用,運算元物件的值會遞增(即,將相應型別的值 1 添加到其中)。
這個while回圈
while( (i=i 1) != 0 );
當賦值后i等于時也停止它的迭代。0i = i 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/405897.html
標籤:
