作者Destiny123 (我想買鏡頭@@")
看板C_and_CPP
標題[問題] 有點老梗的++i與i++問題
時間Sat Mar 21 03:00:40 2009
大略知道這兩者的差異
但是程式跑出來還是讓我無言...
不知道為什麼
#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)
1F:→ xam:沒錯啊.. 03/21 03:10
2F:推 legendmtg:shout circuit 03/21 03:10
3F:→ legendmtg:++x == 1成立後 y++ = 1就不會執行了 03/21 03:10
4F:→ legendmtg: == 03/21 03:11
5F:→ Destiny123:那後面為什麼y一開始是0 最後一行就變1了?@@ 03/21 03:44
6F:→ Destiny123:什麼都沒做耶... 03/21 03:45
※ 編輯: Destiny123 來自: 123.193.83.196 (03/21 03:48)
7F:→ Destiny123:最後一行的第一個y 03/21 04:25
8F:推 ch110:我用dev c++做出的結果是0,0,2 03/21 04:27
9F:→ xam:十誡之九 03/21 04:34
10F:→ Destiny123:我是用VS 03/21 04:38
11F:→ MOONRAKER:<<其實也是一個運算子 C++把他意義改掉了而已 03/21 10:06
12F:→ MOONRAKER:所以cout整行是一個大運算式 而在一個運算式之內用++,-- 03/21 10:07
13F:→ MOONRAKER:這種會改變變數值的運算子一次以上,後果就變成無法預測 03/21 10:08
14F:→ MOONRAKER:有人提醒你十誡之九就是在說這個,去看一下,以後記起來 03/21 10:09
15F:→ eva19452002:在++i or i++做文章很無聊,不同的編譯器有不同做法 03/21 12:47
16F:→ james732:++i跟i++本身的定義很明確 跟其他東西攪在一起才麻煩 03/21 12:57
17F:→ Killercat:cout<<y<<","<<y++<<","<<++y<<endl; ...南無(合掌) 03/21 15:20