繁体   English   中英

C ++中i ++和(i)++之间的区别

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM