[問題] 有點老梗的++i與i++問題

看板C_and_CPP (C/C++)作者 (我想買鏡頭@@")時間16年前 (2009/03/21 03:00), 編輯推噓2(2015)
留言17則, 8人參與, 最新討論串1/1
大略知道這兩者的差異 但是程式跑出來還是讓我無言... 不知道為什麼 #include <iostream> using namespace std; int main() { int x=0,y=0; if(++x==1 || y++==1) { cout<<"(1)"<<x<<','<<y<<endl; } cout<<x<<","<<y<<endl; cout<<x<<","<<y<<endl; cout<<x<<","<<y<<endl; cout<<y<<","<<y++<<","<<++y<<endl; return 0; } -- 執行結果: (1)1,0 1,0 1,0 1,0 1,1,2 為什麼後面幾個一樣印出y的地方 一開始沒加進去 後來就突然加進去了.....?? 有人知道為什麼嗎? -- 春有百花秋有月,夏有涼風冬有雪, 若無閒事掛心頭,便是人間好時節。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.119.233.150 ※ 編輯: Destiny123 來自: 140.119.233.150 (03/21 03:02)

03/21 03:10, , 1F
沒錯啊..
03/21 03:10, 1F

03/21 03:10, , 2F
shout circuit
03/21 03:10, 2F

03/21 03:10, , 3F
++x == 1成立後 y++ = 1就不會執行了
03/21 03:10, 3F

03/21 03:11, , 4F
==
03/21 03:11, 4F

03/21 03:44, , 5F
那後面為什麼y一開始是0 最後一行就變1了?@@
03/21 03:44, 5F

03/21 03:45, , 6F
什麼都沒做耶...
03/21 03:45, 6F
※ 編輯: Destiny123 來自: 123.193.83.196 (03/21 03:48)

03/21 04:25, , 7F
最後一行的第一個y
03/21 04:25, 7F

03/21 04:27, , 8F
我用dev c++做出的結果是0,0,2
03/21 04:27, 8F

03/21 04:34, , 9F
十誡之九
03/21 04:34, 9F

03/21 04:38, , 10F
我是用VS
03/21 04:38, 10F

03/21 10:06, , 11F
<<其實也是一個運算子 C++把他意義改掉了而已
03/21 10:06, 11F

03/21 10:07, , 12F
所以cout整行是一個大運算式 而在一個運算式之內用++,--
03/21 10:07, 12F

03/21 10:08, , 13F
這種會改變變數值的運算子一次以上,後果就變成無法預測
03/21 10:08, 13F

03/21 10:09, , 14F
有人提醒你十誡之九就是在說這個,去看一下,以後記起來
03/21 10:09, 14F

03/21 12:47, , 15F
在++i or i++做文章很無聊,不同的編譯器有不同做法
03/21 12:47, 15F

03/21 12:57, , 16F
++i跟i++本身的定義很明確 跟其他東西攪在一起才麻煩
03/21 12:57, 16F

03/21 15:20, , 17F
cout<<y<<","<<y++<<","<<++y<<endl; ...南無(合掌)
03/21 15:20, 17F
文章代碼(AID): #19m-VTfU (C_and_CPP)
文章代碼(AID): #19m-VTfU (C_and_CPP)