[问题] 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