前++后++问题
1. 下面这段程序有问题吗?如果有问题,请指出问题在哪里?如没问题,请写出下面这段程序的输出结果:
- C/C++ code
#include <iostream>using namespace std;int main(void) { int c = 100; c+=(c++); cout<<c<<endl; //200 c=100; c+=(++c); cout<<c<<endl;//202 c=100; (++c)+=(c++); cout<<c<<endl;//203 c=100; (++c)+=(++c);//204 cout<<c<<endl;}我的编译环境是这个以上的结果,第一个201的不是c=c+c++吗? 后++不是之后再+吗?那不是c=100+100吗?
其他我做出来了当然有可能也是碰对的,求解析
另外a+=b 是a=a+b 还是 a=b+a?
[解决办法]
c+=(c++);
属于未定义行为,不要这样写代码,具体多少依赖编译器的实现
[解决办法]
优先级问题,看看书把
a +=b=>a=a+b,这里还要看看b是否加了括号,这个会有影响的