看板 C_and_CPP 關於我們 聯絡資訊
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++放在判斷式而且還再陣列裡面 請求開示 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.3.118 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1575095982.A.5DE.html
ko27tye: 請搜尋post-increment operator 另外這種寫法還蠻常見的 11/30 15:03
喔大大我知道i++跟++i,我只是想問while( score[i++] >0 )的意思是哪個 因為我沒有看過在陣列裡塞i++然後還放在判斷式裡面XD
ko27tye: 先+1 但返回的是舊值 不在你列的兩個選項之中 11/30 15:30
請問大大,+1完後不就是拿score[i+1]去判斷是否>0,為什麼還可以返回舊值? ※ 編輯: look1214 (223.136.3.118 臺灣), 11/30/2019 15:40:47
a58524andy: 你再看一次i++跟++i差在哪好了 11/30 17:55
a58524andy: 懂了之後可以參考置底13誡之8 11/30 17:55
aa0917954358: 樓上是對的! 會先做i+1但是返回的是i舊值的copy 11/30 21:24
aa0917954358: 假設是i’好了 再用score[i’] > 0判斷 11/30 21:24
這真的很有學問,請問哪裡可以找到相關的說明? 因為我看了13誡之8,知道i++跟++i的步驟 不過先做i+1但返回的卻是i舊值,是代表會複製一個舊值嗎? ※ 編輯: look1214 (223.136.3.118 臺灣), 11/30/2019 22:09:41
LPH66: 對, 在一些語意上後置是複製一個舊值回來 12/01 00:40
b0920075: 語法糖,看asm就知道到底在幹嗎 12/01 13:25
onegoman: 先完成while判斷敘述後,再i=i+1 12/03 12:10
onegoman: 可以再do{} while(); 之後寫一行printf i的值就了解了 12/03 12:12
onegoman: 。 12/03 12:12
onegoman: 更正:‘在’ do.... 12/03 12:15
onegoman: 您這個跟我正在看的書的內容一樣 呵 12/03 12:19
onegoman: 我的解釋不一定對,還請各位前輩指教 謝謝 12/03 12:23