[討論] while迴圈判斷條件

看板C_and_CPP (C/C++)作者 (Swatch)時間5年前 (2019/11/30 14:39), 5年前編輯推噓6(608)
留言14則, 6人參與, 5年前最新討論串1/1
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

11/30 15:03, 5年前 , 1F
請搜尋post-increment operator 另外這種寫法還蠻常見的
11/30 15:03, 1F
喔大大我知道i++跟++i,我只是想問while( score[i++] >0 )的意思是哪個 因為我沒有看過在陣列裡塞i++然後還放在判斷式裡面XD

11/30 15:30, 5年前 , 2F
先+1 但返回的是舊值 不在你列的兩個選項之中
11/30 15:30, 2F
請問大大,+1完後不就是拿score[i+1]去判斷是否>0,為什麼還可以返回舊值? ※ 編輯: look1214 (223.136.3.118 臺灣), 11/30/2019 15:40:47

11/30 17:55, 5年前 , 3F
你再看一次i++跟++i差在哪好了
11/30 17:55, 3F

11/30 17:55, 5年前 , 4F
懂了之後可以參考置底13誡之8
11/30 17:55, 4F

11/30 21:24, 5年前 , 5F
樓上是對的! 會先做i+1但是返回的是i舊值的copy
11/30 21:24, 5F

11/30 21:24, 5年前 , 6F
假設是i’好了 再用score[i’] > 0判斷
11/30 21:24, 6F
這真的很有學問,請問哪裡可以找到相關的說明? 因為我看了13誡之8,知道i++跟++i的步驟 不過先做i+1但返回的卻是i舊值,是代表會複製一個舊值嗎? ※ 編輯: look1214 (223.136.3.118 臺灣), 11/30/2019 22:09:41

12/01 00:40, 5年前 , 7F
對, 在一些語意上後置是複製一個舊值回來
12/01 00:40, 7F

12/01 13:25, 5年前 , 8F
語法糖,看asm就知道到底在幹嗎
12/01 13:25, 8F

12/03 12:10, 5年前 , 9F
先完成while判斷敘述後,再i=i+1
12/03 12:10, 9F

12/03 12:12, 5年前 , 10F
可以再do{} while(); 之後寫一行printf i的值就了解了
12/03 12:12, 10F

12/03 12:12, 5年前 , 11F
12/03 12:12, 11F

12/03 12:15, 5年前 , 12F
更正:‘在’ do....
12/03 12:15, 12F

12/03 12:19, 5年前 , 13F
您這個跟我正在看的書的內容一樣 呵
12/03 12:19, 13F

12/03 12:23, 5年前 , 14F
我的解釋不一定對,還請各位前輩指教 謝謝
12/03 12:23, 14F
文章代碼(AID): #1TuWwkNU (C_and_CPP)
文章代碼(AID): #1TuWwkNU (C_and_CPP)