【发布时间】:2019-07-21 08:27:36
【问题描述】:
int i = 3;
int j = (i)++;
对
int i = 3;
int j = i ++;
以上两种情况的评估方式有区别吗?
第一种情况相当于增加一个右值还是未定义的行为?
【问题讨论】:
-
在宏定义中,括号的随意使用很常见。他们确实有很大的不同,你会喜欢你得到的错误信息。嗯,通常。
-
整数没有区别。但是,情况并非总是如此,在组合括号和运算符时必须小心,@govin-parmar 展示了一个很好的例子,指针会发生什么。
-
需要明确的是,这两种情况都是明确定义的(即,不是 UB),并且会将 3 存储在
j中。 -
“我是不是想多了”是的。
标签: c language-lawyer increment evaluation