关于Arduino中PORTB赋值与自增运算符使用正确性的疑问
关于C/C++自增运算符的疑问解答
你完全没错,这位作者的解释确实是错误的,你的理解才是正确的!
咱们把这几个写法的行为拆解开,就一目了然了:
1. PORTB = pattern++;(后自增)
这个语句的执行顺序是:
- 第一步:将
pattern的当前值赋值给PORTB - 第二步:把
pattern的值加1
举个具体例子,如果pattern初始值是5:
- 执行后
PORTB会被设为5,pattern变成6
2. 作者错误的解释代码:pattern = pattern + 1; PORTB = pattern;
这两行代码的行为等价于前自增运算符的效果:先把pattern加1,再把新值赋值给PORTB。和上面的后自增完全相反。
3. 你认为正确的PORTB = ++pattern;(前自增)
这个语句的执行顺序是:
- 第一步:把
pattern的值加1 - 第二步:将
pattern的新值赋值给PORTB
同样用初始值5举例:
- 执行后
pattern变成6,PORTB也被设为6
简单总结一下:
- 后自增(
variable++):先用旧值,再加1 - 前自增(
++variable):先加1,再用新值
不用怀疑自己的理解,这是C/C++里自增运算符的基础规则,你对这个知识点的掌握是准确的。
内容的提问来源于stack exchange,提问作者some_user
相关产品推荐
相关产品推荐

