※ 引述《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 : 為了計算這個變數的新值的目的 或是 其他