C++中是如何运算+++++i+++++j++++这个表达式的

当然这种写法编译器肯定是会报错的,至于为什么报错呢,看下是如何解析的

对于这种表达式是按照从左往右尽可能读取最长的可以识别的标识符

所以最先读取到一个符号+,再往后也是一个符号+,那么组合起来就是++,而++是C++里面能识别出来的最长的一个符号,是一个自增运算符,如果再往后读一个字符就是+++了,这显然在C++中是没有这样的运算符,也无法作为变量的名称,所以从这里就可以分割开了,以次类推

++
++
+
i
++
++
+
j
++
++

组合起来其实就是(++(++(+((i++)++))))+((j++)++)
因为后自增运算符++优先级大于前+运算符 所以先(i++)++运算
i++是右值,求值完就结束了,无法再次++,所以会提示i++不是左值无法进行i++++操作

后面那个子表达式j++++也是因为这个问题

当然i+++j是可以,会解析成  (i++)+j

++++i+j++也是可以的,会解析成(++(++i))+(j++) ,++i是左值,所以可以再进行++操作

(++++i)+++j++ 也可以

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值