作者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