C語言問題

2022-06-09 14:51:58 字數 950 閱讀 9248

1樓:

int main()

while(--y); //這裡y先自減1 再判斷是否為0 所以最終y=0

printf("%d",y--);//這裡y先列印 然後才自減1 所以到這裡列印出的結果為0 但是y已經變為了-1

}至於printf("%d",y); 因為y沒有自減1 所以 列印的結果為0 y也為0

2樓:好嘞啊啊啊啊

#include

int main()

while(--y);        // 每次退出迴圈的時候正好是0  如果y是單數的話就死迴圈了

printf("%d",y--);  //y--是執行完printf函式後y再減一

}#include

int main()

while(--y);      //// 每次退出迴圈的時候正好是0  如果y是單數的話就死迴圈了

printf("%d",y);

}所以兩個程式最後都列印0

但是 第一個最後y=-1;第二個最後等於0

3樓:

都是0就對了。二者都是y==0以後才跳出迴圈,就是執行printf時y都是0。後者無疑,前者是y--,會誤以為輸出-1;實則是y--是所謂「後--「,要等輸出以後才作減1運算,所以輸出0後y才變為-1。

可以這樣驗證,在兩個printf後各加一句printf("%d?",y);,就會發現前者輸出-1?,後者輸出0?……

4樓:行屍那個走肉啊

因為y--是先返回y的值然後再執行自減運算,所以是先輸出y的值然後再減一~~~~

5樓:

是的,但第一個printf函式完了後y是-1,第二個printf函式完了後y是0

6樓:匿名使用者

因為輸出y--,相當於輸出y然後y-1

c語言問題,C語言問題?

include include int main max min i 0 sum i 0 i 1 i 2 i 3 i 4 i 5 i 6 for j 0 j 6 j printf 去掉一個最高分 0.6lf max printf 去掉一個最低分 0.6lf n min printf 該選手最後的得分...

c語言問題,C語言問題?

char的範圍是 128 127的 你362就溢位了嘛 是這樣的 0362 0是表示8進位制 於是362在10進位制下是242 242溢位了 128 127 於是結果變成242 128 128 14 要明白這個,首先要明白記憶體中 c 變數是什麼樣子的。整數在記憶體中是以補碼的形式存取的。c 036...

C語言問題C語言問題,C語言小問題段錯誤是什麼

str2num char p num num k return num c語言問題c語言問題 include int main int h,m scanf d d h,m printf s num h if m 0 else printf o clock printf n return 0 c語言小...