自增自减操作符在C与C++中的左值区别

今天网上看到一个华为的面试题目:


写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值

int a = 4;

(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);


答案是C是错误的,而A B D是正确的。

我感到很疑惑,于是敲代码验证下,在C++中,确实答案是C不正确。但是在C中,C与D都是错误的。这就非常奇怪了,为什么会这有这样的区别,原因在什么地方呢?

想要知道答案,只能求助于经典书籍了。微笑


C部分

在《C和指针》5.1 操作符中,有这么一段描述:

int a, b, c, d;

...

a = b = 10;                  a和b得到值10

c = ++a;                      a增加到11,c得到的值为11

d = b++;                       b增加到11,d得到的值为10

抽象地说,前

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值