看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《OpenSkyWin (雞飛城市)》之銘言: : 期中考居然碰到像這種for迴圈 : int i; : for(i=0;i=1;i++) : { : printf(" i is %d \n",i); : } : 然後問你這個迴圈總共會執行幾次= =" : 判斷式給我放i=1咧...我咧,這什麼東西... : 要是放0或1或a-i什麼之類的我還能懂 : 到底這樣放有什麼意思呢?? : 增加閱讀的困難?? 條件判斷放i=1的話,會變成這樣 (1)賦值 i = 1; (2)邏輯判斷: i的值如果是零,代表false;非零值則代表true 由於前一個動作讓i的值變成1,所以這個for迴圈會變成無窮迴圈 假設這個題目沒有出錯 我認為這個題目是提醒寫程式的人,要注意"="和"=="兩者的不同 不小心寫錯的話就會造成無窮迴圈,程式卡在哪邊都不知道 -- ∫work dt = success -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.176.224
Peruheru:話說VB不能打"==",只能打"="..... 04/23 00:51
TroyLee:+1 04/23 00:51
Peruheru:不管賦值還是判斷都是使用同一個符號... 04/23 00:51
OpenSkyWin:「前一個動作讓i的值變成1」這句話不太懂?? 04/23 00:53
OpenSkyWin:我知道for迴圈其實可以拆成while來看 04/23 00:53
nswrthh:不是說了嗎,i的值是1時就表示其邏輯值是true 04/23 00:56
Peruheru:(i) 下面是(2) 我感覺應該是要打(1) ? 04/23 00:56
嗯...打錯了
nswrthh:迴圈每次的邏輯值都是true迴圈自然就不會停 04/23 00:57
OpenSkyWin:哦,判斷式去執行i=1的意思哦 04/23 00:57
OpenSkyWin:是這樣嗎 04/23 00:57
ledia:對呀, 無論 i=1 還是 i==1 都是 expression 呀 04/23 01:00
ledia:只是 i=1 會改變 i 的值, 回傳值也是 i 04/23 01:00
OpenSkyWin:哦,thanks!! 感謝各位!! 04/23 01:01
ledia:i==1 不會改變 i 的值, 回傳值是 i 和 1 是否相等的結果 04/23 01:01
chrisdar:養成習慣 for(i=0;1=i;i++) =>> 編譯就會報錯了 04/23 01:01
chrisdar:不過 for(i=0;a=i;i++) 這就沒辦法了 04/23 01:02
OpenSkyWin:看來這判斷式的變化真多端啊...真是不能小看@@ 04/23 01:04
sandr1983:可是ch大.那個報錯原因是因為不能賦值給常數吧 04/23 01:07
sandr1983:C裡面只要符合格式它就不會報錯了 04/23 01:09
※ 編輯: cismjmgoshr 來自: 61.230.176.224 (04/23 01:09)
chrisdar:error C2106: '=' : 左運算元必須是左值 (l-value) 04/23 01:15
chrisdar:的確我是用 C2106 來提醒自己不要寫錯 04/23 01:15
wowtiger:for 中間沒用過 == 所以不會有這問題 倒是 != 蠻常用的 04/23 01:18