推 putumaxally:敘述二是不是說 sum = a++ + a++; // int a = 0; 06/03 23:55
這個似乎可以用敘述一處理?
推 purpose:不寫入的話,你可以存取該變數無數次;一旦你寫入了,哪怕06/04 00:18
→ purpose:僅只修改該變數一次,也不能再多做讀取,如:v[i] = i++;06/04 00:19
→ purpose:即未定義行為。但是 notVarI = i++; 則是有明確結果的運算 06/04 00:20
其實我覺得八誡的整個精神好像可以用pur大說的囊括就可以了 只要寫入過
不論讀取或是再寫入 都會有問題(再寫入也是可能需要再讀取阿~)
只是細讀一下第二敘述又怕哪裡想錯了 想請各路高手幫觧 XDDDD
推 legendmtg:板上很久沒出現的神人tinlans大大有篇寫得很好06/04 01:31
感謝 需要時間理解 不過現在無法直接運用阿阿阿阿阿阿
總結:
小魯對於八誡的第二個敘述理解上有些問題(已說明在上面) 對於此誡的精神我的理解是:
只要在同一個運算式修改過變數 則在同一運算式內不論是再讀取或是再修改 皆會有沒定
義的行為出現
似乎此誡的第二個敘述是在說明讀取那方面 只是敘述上有點令人疑惑
不知道是否如此?
煩請各路英雄幫忙 謝謝~~~~~~~~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.129.21.176
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1401920661.A.2BE.html
※ 編輯: saladim (220.129.21.176), 06/05/2014 06:25:15
※ 編輯: saladim (220.129.21.176), 06/05/2014 06:26:24
※ 編輯: saladim (220.129.21.176), 06/05/2014 06:27:39
※ 編輯: saladim (220.129.21.176), 06/05/2014 06:30:27
推 putumaxally: ++i; 或 i++; 都自己一行的話,應該就不用管第八戒了 06/05 10:50
→ putumaxally:我寫兩個後置 ++ 你寫成一個前置 ++ 06/05 10:53
推 RealJack:不可以因為AA而... 這句話等同: 因為AA而...是被禁止的 06/05 14:16
→ RealJack:若是因為AA而...是不行的,標上紅色和綠色的句子是同件事 06/05 14:19
→ RealJack:誡8可以簡單說: ++a,a++出現過,表達式就'不該'出現a 06/05 14:25
→ RealJack:像是邏輯&&和邏輯||可以出現a++兩次=> if(a++ && ++a) 06/05 14:28
→ RealJack:因為求值順序被規定要"先"算左"再"算右 06/05 14:29
推 diabloevagto:邏輯判斷要小心 Short-Circuit Evaluation 06/05 22:57
※ 編輯: saladim (36.228.235.166), 06/06/2014 01:31:53
推 LPH66:RJ 講的正是因為短路的關係所以必須先算左完才能算右 06/06 02:52
→ LPH66:不過這就代表右邊的計算可能不會進行 06/06 02:52
→ saladim:R大 八誡精神我大概理解 只是這邊文字上令人困惑 06/07 07:51
→ saladim:然後我有些錯誤 已改 在綠色句子那邊 06/07 07:52
→ saladim:修正過後 如果沒再次犯錯的話 才是想要表達的 但這跟R大大 06/07 07:53
→ saladim:的解釋文(R大推文的第一,二行)又不太一致 06/07 07:54
推 RealJack:綠色那段文字 = 誡八敘述一,所以不能再次存取變數 06/07 12:05
→ RealJack:能否用一個例子指出矛盾點,這樣比較能釐清問題 06/07 12:07
→ saladim:R大 就是想不出矛盾例子~ 怎麼說勒 這邊我疑惑之處就是: 06/08 20:16
→ saladim:如果不能因為AA作動作BB 那因為AA可以作動作BB嗎? 06/08 20:17
推 RealJack:文字對照到符號上需要細心檢查,假設AA=下雨,BB=曠課 06/08 21:21
→ RealJack:第一句:不能因為下雨而曠課,第二句:因為下雨可曠課嗎? 06/08 21:22
→ RealJack:事實上面兩句子是同一句 06/08 21:23
→ RealJack:而綠色那句:那若不是因為下雨呢? 是講晴天可不可以曠課 06/08 21:25
→ saladim:用r大的例子 第二句就是: 那因為下雨而外的原因可曠課 06/08 21:25
→ RealJack:其實綠色是講誡8第一條,所以也是不行的 06/08 21:26
推 RealJack:這個語句我反覆確認過,相信是沒有問題的,這敘述方式和 06/08 21:39
→ saladim:所以我是被疑惑了 既然除了少數情況 則修改後讀取跟再修改 06/08 21:40
→ saladim:皆不允許 那寫成第二敘述那種形式 會使人想說難道有其他 06/08 21:41
→ saladim:形式可以作修改後再讀取/修改... 06/08 21:41
→ saladim:所以 我想第一敘述跟第二敘述只是分別對再修改跟再讀取 06/08 21:42
→ saladim:分別說明 對媽? XDDDDDDDDDD 06/08 21:42
推 RealJack:是的,(先修改再修改)(先修改再讀取)(先讀取再修改)都不行 06/08 21:47