当前位置:网站首页>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是个常量,常量是无法被赋值的,
自然而然的这个表达式就是错的。
总结一下,上面表达式错误的根本原因是给常量赋值,因为像 += 、-= 、*=、 /=、 %= 之类的操作符是具有赋值功能的。
边栏推荐
- Doris学习笔记之优化
- Knowledge points and written test questions related to shift operations, bit operations, and logical operations
- 第十二届蓝桥杯《杨辉三角》-二分法
- MySQL:锁机制 |表级锁、行级锁 | 排它锁、共享锁 | 间隙锁
- The use of qsort function and its analog implementation
- (4) FlinkSQL writes socket data to mysql Method 1
- String转成double等类型注意非空判断
- (6) FlinkSQL writes kafka data to mysql Method 1
- 如果Controller里有私有的方法,能成功访问吗?
- 深析C语言的灵魂 -- 指针
猜你喜欢
KD-SCFNet: More Accurate and Efficient Salient Object Detection Through Knowledge Distillation (ECCV2022)
qsort 函数的使用及其模拟实现
Jenkins - Introduction to Continuous Integration (1)
[C language] Dynamic memory management
今日睡眠质量记录83分
[C language] file related operations
连锁小酒馆第一股,海伦司能否梦圆大排档?
Qt操作Sqlite类封装,及命令行导入csv文件到Sqlite数据库
MySQl表的增删查改(CRUD)
Fluorite, millet against smart camera
随机推荐
MySQl表的增删查改(CRUD)
R语言使用位置索引筛选dataframe的数据列:筛选单个数据列、筛选多个数据列、列表表达式方法、矩阵式下标方法
C language small project -- address book (static version + dynamic version + file version)
2022-08-03
(7) FlinkSQL kafka data written to the mysql way 2
C language small project - complete code of minesweeper game (recursive expansion + selection mark)
qsort 函数的使用及其模拟实现
一文搞懂│XSS攻击、SQL注入、CSRF攻击、DDOS攻击、DNS劫持
Jenkins - install (2)
Flink1.15 组件RPC通信过程概览图
【C语言】深度剖析数据在内存中的存储
代码随想录笔记_动态规划_322零钱兑换
深入浅出对话系统——任务型对话系统技术框架
[C language] Detailed explanation of custom types: structure, enumeration, union
R语言数据类型转换:基本数据类型的转换、将一种数据类型转化为另外一种数据类型
The use of string function, character function, memory function and its analog implementation
leetcode 155. Min Stack最小栈(中等)
[C language] Dynamic memory management
程序员必备的VS调试技巧
[Redis] Redis installation and use of client redis-cli (batch operation)