[英]Difference between i++ and (i)++ in C
int i = 3;
int j = (i)++;
VS
int i = 3;
int j = i ++;
上述两种案例的评估方式是否存在差异?
第一种情况是等同于递增rvalue还是未定义的行为?
i++
和(i)++
表现相同。 C 2018 6.5.1 5说:
带括号的表达式是主表达式。 它的类型和值与未表示的表达式相同。 如果未表示的表达式分别是左值,函数指示符或空表达式,则它是左值,函数指示符或void表达式。
C 1999中的措辞相同。
在你简单的i++
与(i)++
例子中,没有区别,正如Eric Postpischil所说的那样。
但是,如果使用*
运算符取消引用指针变量并使用increment运算符,则此差异实际上是有意义的; *p++
和(*p)++
之间存在差异。
前一个语句取消引用指针,然后递增指针本身; 后一个语句取消引用指针然后增加解除引用的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.