printf与cout的问题
- C/C++ code
int main(){int i=2;printf("%d,%d,%d,%d\n",i++,++i,i,i++);printf("%d\n",i); return 0;}void main(){ int i=2; cout<<i++<<++i<<i<<i++<<endl; cout<<i<<endl;}谁能来详细解释下以上两段代码输出什么吗,为什么会这样输出,求指导!
[解决办法]
http://topic.csdn.net/u/20110826/09/601ebe9c-c2ae-4d63-a4e2-506c618bb654.html?14383
每天都有人问...
[解决办法]
不要在同一个表达式中使用++或--超过一次,这样的行为会随着编译器的改变而改变。
换言之,这样的问题没有意义。
[解决办法]
典型的未定义行为。
参考下面链接中的文章:
C,C++表达式求值顺序 裘老的解释
[解决办法]
日经贴,请楼主参看文章解释:
[解决办法]
[解决办法]
日经贴
[解决办法]
不同的编译器有不同的答案。
[解决办法]
不同的编译器有不同的答案。
[解决办法]
前++直接改变变量的值;后++先生成一个中间变量,将原来的值放在中间变量中,然后变量的值加1,所以i++的值为中间变量的值,即原来变量的值而++i的值为i+1的值。