为什么++不增加整数值?

时间:2017-05-25 15:32:56

标签: c

在C中,为什么num1++中没有printf()增量?

int num1 = 1;
printf("num1=%d", num1++);

5 个答案:

答案 0 :(得分:7)

++ 确实增加操作数...但在其后缀形式中,评估之前递增

++num1会在递增后评估值。

答案 1 :(得分:5)

因为表达式

num1++

评估为num1

您可能想要这样做:

++num1

评估为num1 + 1

但请注意,两个表达式都将num1递增1。

在下一个语句中评估num1评估增量值。

简而言之

  

在C中,为什么在printf()?#/ p>中没有增加num1 ++

num1++会增加num1,但会评估为num1,而评估结果是您传递给printf()的内容。

答案 2 :(得分:3)

后缀++运算符计算操作数的当前值,然后它会增加它。如果再次使用printf作为参数调用num1,则会看到增量的效果。

来自C standard的第6.5.2.4节:

  

2 后缀++运算符的结果是操作数的值。作为副作用,操作数对象的值递增(即   是,相应类型的值1被添加到它)。

如果您使用前缀++运算符,即++num1,则增量将反映在输出中。

答案 3 :(得分:2)

它来自于++在变量之后的事实,这将解决您的问题

printf("num1=%d", ++num1);

在打印出内容之后,你的变量的方式会增加,所以如果你对这个变量做另一个printf你应该有正确的值,通过把它放在前缀的方式,它会在输出之前递增变量

答案 4 :(得分:0)

因为在变量末尾加上++导致在操作之后发生增量。在变量之前添加++将在操作之前执行添加。