看板 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什麼之類的我還能懂 : 到底這樣放有什麼意思呢?? : 增加閱讀的困難?? 我想這是寫程式的人自己的盲點,可能因為寫久了都看到比較普通的for迴圈寫法, 以及認為for必須寫成有效完成一段程式的樣式. 但是,for語法的三個位置,第一個規定進入迴圈的初值,第二個規定持續迴圈的條件, 第三個規定迴圈前後的差異. 所以 for(i=0;i=1;i++) 不正是規定了: - 進入迴圈時,i為0. - 若「i能指定為1」則持續迴圈. 結果會發現,無論什麼情況,i都能指定為1,所以是無窮迴圈嘛! 沒有人規定程式都要寫對,也沒有人規定考卷上出現的程式都要「正確」或「有意義」. 當有些人在抱怨考題「沒有意義」的時候,卻忘了他應考只有「在考題正確 的情況下不要答錯」的權力,而沒有修正考題的權力. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.112.225.34 ※ 編輯: yauhh 來自: 59.112.225.34 (04/23 02:39)
kvykn:解釋完美 04/23 08:18
OpenSkyWin:感恩!! 04/23 09:55
VictorTom:推這位大大的說法, 除非題目是錯的, 否則不應該改題目:) 04/23 09:55
stonehomelaa:很明顯這是陷阱題吧 04/23 09:57
OpenSkyWin:其實在解的過程我還把i=1搬過來變成i-1=0想說i值是1那 04/23 10:00
OpenSkyWin:結果就是false ...XD 04/23 10:01
VictorTom:基本上那跟 if(i=1) 是一樣的意思, 可以說是陷阱題, 04/23 10:01
VictorTom:但是滿有教育意義的; 也是檢視對statement expression 04/23 10:02
VictorTom:了解程度的好方法XDDD 04/23 10:02
ksmrt0123:若「i能指定為1」... 這說法是錯的 04/23 13:28
fjm31714:恩恩 應該是(i=1)的值為1吧 04/23 13:53
stonehomelaa:科科 原po寫個if (i = 0)就知道囉 ^.< 04/23 14:20
yauhh:喔,講錯了,應該說「i指定為1的意義被認為真」,雖然難懂一點 04/23 16:57
ledia:不是吧, 就是 i 的值吧, 不然 for(;i=0;) 呢? @@ 04/23 18:53
ledia:跟指定什麼的意義為不為真沒有關係 04/23 18:53
ledia:不然 j=i=0; j=i=1; 不就沒差了 04/23 18:54
stonehomelaa:對呀 跟指定不指定沒啥關 就是看i的值 04/23 19:24
sunneo:我想`指定` 應該是英文 assign 的翻譯吧 ~_~ 04/23 23:34
sunneo: 或者說應該叫做指派 04/23 23:34
yauhh:當一個條件式用到一個指定,就可以說指定啊,程式碼明寫了指定 04/24 00:40
yauhh:卻「跟指定無關」,啥意思? 指定本來就是assignment 04/24 00:40
yauhh:指定,指派,都一樣,只是一個譯詞;不要把譯詞再拿去用中文思考 04/24 00:41
yauhh:for(;i=0;)內是i指定為0的意義不成立,因為全值0認定為false 04/24 00:43
yauhh:今天我說「意義被認為真」只是指解釋成true而已,何必想太多 04/24 00:43
yauhh:分析那麼多是要吵到什麼時候,大家都是口語邏輯達人嗎? 04/24 00:44
yauhh:大家有好好正式修過「口語邏輯」這堂課嗎?真要那麼嚴肅!? 04/24 00:45
yauhh:再爭下去,是不是要順便幫以上的語意寫編譯器了? 04/24 00:48
sunneo:息怒吧 我想事情並沒這麼嚴重 04/24 01:01
ledia:我是說跟指派的意義無關, 卻變成了「跟指定無關」 04/24 01:37
ledia:指定指派都好, 本身沒有什麼意義, 只有傳回值, 如果你真的要 04/24 01:41
ledia:扯邏輯的話。 04/24 01:41
wupojung:如果是這樣呢 const y=0; 04/24 07:49
wupojung:for(int i=0;j=1;i++) 如果是這樣會如何阿? 04/24 07:50
wupojung:打太快...應該是 const int y=0; 感謝原PO的解釋 04/24 07:53
wupojung:還是打錯.....const int j=0; (我還沒睡醒 XD...) 04/24 07:54
VictorTom:樓上, j是const的話, j=1 compiler就會把你擋掉了.... 04/24 09:45
wupojung:恩...我的意思就在這裡啊..還感謝原PO讓我明白 04/25 01:48
wupojung:其實 i=1 這樣會return true.....(應該可以這樣說吧) 04/25 01:48