※ 引述《RealJack ()》之铭言:
: ※ 引述《saladim (杀拉顶)》之铭言:
: : 小弟对于13诫之八有点疑惑, 主要在第二个叙述, 以下引述第八诫:
: : ===========
: : 你不可以在一个运算式(expression)中,对一个基本型态的变量修改其值
: : 超过一次以上。否则,将导致未定义的行为(undefined behavior)
: (++i)+(i++)
: 叙述一是说不可以在一条运算式中对某个变量在不同的地方改变值
: : 你也不可以在一个运算式(expression)中,对一个基本型态的变量修改其值,
: : 而且还在同一个式子的其他地方为了其他目的而存取该变量的值。(其他目的
: : 是指不是为了计算这个变量的新值的目的)。否则,将导致未定义的行为。
: 叙述二是说不可以在一条运算式中的一个地方对某个变量改变值,
: 又在"同一条运算式的另一个地方"读取此变量的值
: int i=0;
: cout<<i<<" "<<++i<<endl; //未定义,取自C++ primer 5th 简中版P.123
: 先求++i=> 输出1 1
: 先求 i=> 输出0 1
: 叙述一,二会出问题都是因为求值顺序未定义
谢谢 这个例子替我解答了部分疑惑 这样的一个statement的确不是纯粹是计算值而已
其实另一个疑惑是 此叙述说不可以因为目的AA(用符号代表) 而在同一个expr
内修改值后再去存取该变量 那我就想问: 那若不是因为AA呢? 若是因为AA就
可以再次存取吗?
不是目的AA : 为了计算这个变量的新值的目的 或是 其他