[討論] while迴圈判斷條件

作者: look1214 (Swatch)   2019-11-30 14:39:40
int score[10];
int i = 0, sum = 0, num;
printf("請輸入成績(要結束請輸入0):\n");
do
{
printf("請輸入成績:");
scanf("%d", &score[i]);
} while (score[i++] > 0);
請問while (score[i++]) > 0);
這句的意思是
1. 先用score[i]判斷是否大於0,i再+1
還是
2. 直接用score[i++]判斷是否大於0
第一次看到do-while的i++放在判斷式而且還再陣列裡面
請求開示
作者: ko27tye (好滋好滋)   2019-11-30 15:03:00
請搜尋post-increment operator 另外這種寫法還蠻常見的先+1 但返回的是舊值 不在你列的兩個選項之中
作者: a58524andy (a58524andy)   2019-11-30 17:55:00
你再看一次i++跟++i差在哪好了懂了之後可以參考置底13誡之8
作者: aa0917954358 (Doem)   2019-11-30 21:24:00
樓上是對的! 會先做i+1但是返回的是i舊值的copy假設是i’好了 再用score[i’] > 0判斷
作者: LPH66 (-6.2598534e+18f)   2019-12-01 00:40:00
對, 在一些語意上後置是複製一個舊值回來
作者: b0920075 (Void)   2019-12-01 13:25:00
語法糖,看asm就知道到底在幹嗎
作者: onegoman (SKY)   2019-12-03 12:10:00
先完成while判斷敘述後,再i=i+1可以再do{} while(); 之後寫一行printf i的值就了解了。更正:‘在’ do....您這個跟我正在看的書的內容一樣 呵我的解釋不一定對,還請各位前輩指教 謝謝

Links booklink

Contact Us: admin [ a t ] ucptt.com