[問題] 13誡之八的疑惑

作者: saladim (殺拉頂)   2014-06-03 22:33:51
小弟對於13誡之八有點疑惑, 主要在第二個敘述, 以下引述第八誡:
===========
你不可以在一個運算式(expression)中,對一個基本型態的變數修改其值
超過一次以上。否則,將導致未定義的行為(undefined behavior)
你也不可以在一個運算式(expression)中,對一個基本型態的變數修改其值,
而且還在同一個式子的其他地方為了其他目的而存取該變數的值。(其他目的
是指不是為了計算這個變數的新值的目的)。否則,將導致未定義的行為。
===========
第二個敘述中: "其他目的,是指不是為了計算這個變數的新值的目的"
我的疑惑在於, 此敘述似乎暗指 若是為了計算此變數新值的話 仍然可以讀取該變數的值
但是似乎又不合理 因為想不出任何是為了計算變數新值修改到此變數又去讀取的例子
再者, 也會違反八誡的第一個敘述阿??
x = x++ * x ; <====這樣算是一個case嗎?
作者: putumaxally (putumaxally)   2014-06-03 23:55:00
敘述二是不是說 sum = a++ + a++; // int a = 0;
作者: purpose (秀才遇到肥宅兵)   2014-06-04 00:18:00
不寫入的話,你可以存取該變數無數次;一旦你寫入了,哪怕僅只修改該變數一次,也不能再多做讀取,如:v[i] = i++;即未定義行為。但是 notVarI = i++; 則是有明確結果的運算
作者: legendmtg (CLANNAD)   2014-06-04 01:31:00
板上很久沒出現的神人tinlans大大有篇寫得很好http://blog.tinlans.org/2010/08/06/sequence-point/

Links booklink

Contact Us: admin [ a t ] ucptt.com