在C中,为什么num1++
中没有printf()
增量?
int num1 = 1;
printf("num1=%d", num1++);
答案 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)
因为在变量末尾加上++导致在操作之后发生增量。在变量之前添加++将在操作之前执行添加。