Re: [问题] 13诫之八的疑惑

楼主: RealJack   2014-06-04 01:26:37
※ 引述《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
叙述一,二会出问题都是因为求值顺序未定义
: ===========
: 第二个叙述中: "其他目的,是指不是为了计算这个变量的新值的目的"
: 我的疑惑在于, 此叙述似乎暗指 若是为了计算此变量新值的话 仍然可以读取该变量的值
: 但是似乎又不合理 因为想不出任何是为了计算变量新值修改到此变量又去读取的例子
: 再者, 也会违反八诫的第一个叙述阿??
: x = x++ * x ; <====这样算是一个case吗?

Links booklink

Contact Us: admin [ a t ] ucptt.com