Chinaunix

标题: 关于++的问题 [打印本页]

作者: lxl8768    时间: 2013-09-25 19:48
标题: 关于++的问题
写了若干年的程序,今天悲催了...

int a = 1;
int b = a++ + a++;

这时候b的值是什么??我一直都以为是3
作者: hellioncu    时间: 2013-09-25 20:05
告诉你值跟编译器相关,你是不是更......
作者: lxl8768    时间: 2013-09-25 20:15
回复 2# hellioncu


    gcc和vc都是同样的结果,有没有c编译器结果是3的?我看了汇编结果,是先做了加法和赋值又做的++
作者: hellioncu    时间: 2013-09-25 20:23
lxl8768 发表于 2013-09-25 20:15
回复 2# hellioncu


别琢磨这种没什么意义的写法了,万一被解毒专家看到,又要骂谭浩强了
作者: 井蛙夏虫    时间: 2013-09-26 00:36
回复 3# lxl8768
看看c++序列点的概念
一个语句中两次改变a的值,这是未定义的行为


   
作者: fender0107401    时间: 2013-09-26 08:05
lz既然写了这么多年了,还问这种问题。。。
作者: myworkstation    时间: 2013-09-26 09:54
回复 1# lxl8768


    只是碰巧相等了。你试试gcc 3.x的版本和gcc 4.x的版本,还有vc++ 6,2003,2005.2008,哪怕是相同编译器的不同版之间这个值都会有差异的,标准规定两个序列点之间一个变量多于一次的修改的行为是未定义的(就是说你没法确切的说这个值一定是什么)。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2