#include
int main()
{ int count=0;
printf("%d%d%d\n",count++,count++,count++);
}
为什么结果是210?这个++到底是什么时候执行?
另外我将上面输出语句改成count=count++;然后再输出count,结果是0。。。
感觉好混乱,求真正明白的大神讲解
count++的问题,++求解答
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
6条回答 默认 最新
- 小灸舞 2016-04-19 11:30关注
首先,这个问题并没有一个标准的答案,依赖于编译器,不同的编译器结果很可能不同
但一般来说有一点是一样的,那就是printf压栈顺序是从右往左,然后根据第一个参数的format里的占位符依次弹栈,匹配占位符进行输出
不用刻意去研究为什么会得到这个结果,只要记住不要在一个表达式对同一个变量多次++,这是一个未定义的行为
如果楼主选定一个编译器了,那么可以继续问,不然没有太大研究的必要
同时,楼主你试试printf("%d%d%d\n",count++,count++,++count);打印结果是不是出乎你意料了
哈哈,这里的前++和后++不仅涉及到了是先计算后加1还是先加1再参与计算,还涉及到了有的编译器会将前++会将引用压栈,而有的编译器却不会
PS:后++和前++的区别楼主应该是搞得清楚的吧。。。楼上的反正也解释的很清楚
也可以参考:http://bbs.csdn.net/topics/370153775本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 4无用
悬赏问题
- ¥20 delta降尺度方法,未来数据怎么降尺度
- ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
- ¥15 再不同版本的系统上,TCP传输速度不一致
- ¥15 高德地图点聚合中Marker的位置无法实时更新
- ¥15 DIFY API Endpoint 问题。
- ¥20 sub地址DHCP问题
- ¥15 delta降尺度计算的一些细节,有偿
- ¥15 Arduino红外遥控代码有问题
- ¥15 数值计算离散正交多项式
- ¥30 数值计算均差系数编程