[問題] 新手十誡的疑問?
以爬過文,但還是有些不懂
先附上原文
九、你不可以在一個運算式(expression)中,對一個基本型態的變數修改其值
超過一次以上。否則,將導致未定義的行為(undefined behavior)。
錯誤例子:
int i = 7;
int j = ++i + i++;
正確例子:
int i = 7;
int j = ++i;
j += i++;
你也不可以在一個運算式(expression)中,對一個基本型態的變數修改其值,
而且還在同一個式子的其他地方為了其他目的而存取該變數的值。(其他目的,
是指不是為了計算這個變數的新值的目的)。否則,將導致未定義的行為。
錯誤例子:
int arr[5];
int i = 0;
arr[i] = i++;
正確例子:
int arr[5];
int i = 0;
arr[i] = i;
i++;
[C++程式]
錯誤例子:
int i = 10;
cout << i << "==" << i++;
正確例子:
int i = 10;
cout << i << "==";
cout << i++;
-----
我的問題在於,我還是不懂為什麼以上是錯誤例子,因為C++裡,i++和++i的差別
很明確阿。i++是先執行運算、輸出後再++;++i是先++後再執行運算、輸出,
按照這個規則,程式的結果都可預期,也沒有BUG,不知道為什麼算錯誤。
我用的是dev C++,會有差別嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.193.217.183
→
08/16 16:43, , 1F
08/16 16:43, 1F
→
08/16 16:44, , 2F
08/16 16:44, 2F
→
08/16 16:45, , 3F
08/16 16:45, 3F
推
08/16 16:45, , 4F
08/16 16:45, 4F
→
08/16 16:45, , 5F
08/16 16:45, 5F
→
08/16 16:46, , 6F
08/16 16:46, 6F
→
08/16 16:46, , 7F
08/16 16:46, 7F
→
08/16 16:47, , 8F
08/16 16:47, 8F
推
08/16 17:03, , 9F
08/16 17:03, 9F
→
08/16 17:43, , 10F
08/16 17:43, 10F
→
08/16 19:52, , 11F
08/16 19:52, 11F
→
08/16 20:08, , 12F
08/16 20:08, 12F
推
08/17 12:08, , 13F
08/17 12:08, 13F