关于c++ 自增自减的问题?

[复制链接]
查看11 | 回复6 | 2021-1-27 07:12:48 | 显示全部楼层 |阅读模式
inta=10;
intb=0;
b=++a+++a;
b值为什是24?
难道是先执行两次a变量的自加后,再求a+a的和?
编译的时候按
++a
++a
b=a+a
这样子和吗?
分 -->
回复

使用道具 举报

千问 | 2021-1-27 07:12:48 | 显示全部楼层
同一个变量一行只写一个++,--
回复

使用道具 举报

千问 | 2021-1-27 07:12:48 | 显示全部楼层
首先你应该了解一下自加运行在前后的区别
++在前时:先自己身加一,再参加到运算里面。(参加运算时变量值是加一后的值)
++在后时:先参加公式运算,再者自身加一。(参加运算时变量值还是原来的值)
所以,在上边的运算中,变量a先自加了两次变为12后,才参加公式运算的。
回复

使用道具 举报

千问 | 2021-1-27 07:12:48 | 显示全部楼层
引用2楼曹佑之的回复:首先你应该了解一下自加运行在前后的区别
++在前时:先自己身加一,再参加到运算里面。(参加运算时变量值是加一后的值)
++在后时:先参加公式运算,再者自身加一。(参加运算时变量值还是原来的值)
所以,在上边的运算中,变量a先自加了两次变为12后,才参加公式运算的。
错的
了解一下未定义行为
回复

使用道具 举报

千问 | 2021-1-27 07:12:48 | 显示全部楼层
未定义行为,编译器只实现单个变量的++--,从左往右还是从右往左没有强制标准,看编译器自己的实现
回复

使用道具 举报

千问 | 2021-1-27 07:12:48 | 显示全部楼层
你的理解是对的
回复

使用道具 举报

千问 | 2021-1-27 07:12:48 | 显示全部楼层
看汇编代码。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行