当前位置:网站首页>a += 1 += 1为什么是错的?
a += 1 += 1为什么是错的?
2022-08-08 13:30:00 【LeePlace】
首先给出下面的代码:
int main() {
int a = 1;
int b = 1;
a += b += 1;
printf("a = %d\n", a);
printf("b = %d\n", b);
return 0;
}
运行结果如图:

通过运行结果可以很容易推断出:a += b += 1 <=> a += (b += 1)
现在解决一开始的问题,a += 1 += 1 为什么是错的?
很明显,由上述的推断可知上面的表达式等价于a += (1 += 1)
这个表达式会先运算 1 += 1 ,
而 1 += 1 等价于 1 = 1 + 1,
等价后的表达式意味着把 1 + 1 的结果赋值给左操作数1 ,
左操作数1是个常量,常量是无法被赋值的,
自然而然的这个表达式就是错的。
总结一下,上面表达式错误的根本原因是给常量赋值,因为像 += 、-= 、*=、 /=、 %= 之类的操作符是具有赋值功能的。
边栏推荐
- sample函数—R语言
- MySQL database storage series (5) the InnoDB storage format
- In-depth analysis of the soul of C language -- pointer
- 指针和数组笔试题解析
- SAP数据迁移需要多久?
- The use of qsort function and its analog implementation
- 腾讯,投了个 “离诺贝尔奖最近的华人”
- 难产的“第一股”:中式快餐之困
- poj2096 Collecting Bugs
- Implement a customized pin code input control
猜你喜欢
随机推荐
树上距离为1子集修改
干货满满,中科院信工所于静新课帮你get学术研究与论文写作技能
idea中项目呈现树形结构
家电行业趋势:2022从三方面把握家电产品升级方向
使用shardingjdbc实现读写分离配置
R语言使用位置索引筛选dataframe的数据列:筛选单个数据列、筛选多个数据列、列表表达式方法、矩阵式下标方法
指针和数组笔试题解析
win32&mfc————win32菜单栏&库
(7)FlinkSQL将kafka数据写入到mysql方式二
Jenkins - install (2)
2022-08-03
[8月4日]剑指 Offer 52. 两个链表的第一个公共节点
MySQL database storage series (5) the InnoDB storage format
(5) FlinkSQL writes socket data to mysql Method 2
简析LDO静态电流与功耗的关系
[C language] Dynamic memory management
建材业深陷数字化困局,B2B协同系统标准化交易流程,解决企业交易网络化难题
Implement a customized pin code input control
(8)FlinkSQL自定义UDF
一桩事先张扬的网红书店倒闭案






![[C language] In-depth analysis of data storage in memory](/img/7c/a277657a85cc0e29db8df919439949.png)


