C语言 为什么integer++不增加整数值?

eqoofvh9  于 2023-04-05  发布在  其他
关注(0)|答案(5)|浏览(110)

为什么num1++printf()中不递增?

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

为什么打印num1=1而不是num1=2

6ojccjat

6ojccjat1#

++确实递增操作数...但在其后缀形式中,它递增之前计算为值**。
++num1递增后计算为值。

wlp8pajw

wlp8pajw2#

因为这句话

num1++

计算结果为num1
您可能需要执行以下操作:
++num1
其评估为num1 + 1
但是请注意,这两个表达式都将num1递增1。
在下一个语句中计算num1将计算为递增的值。

总之

在C中,为什么printf()中num1++不递增?
num1++确实递增了num1,但它的计算结果是num1,而这个计算结果就是您传递给printf()的值。

2izufjch

2izufjch3#

它来自于++在变量后面,这将解决你的问题

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

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

w6mmgewl

w6mmgewl4#

后缀++运算符的计算结果为操作数的当前值,然后递增它。如果您再次以num1作为参数调用printf,您将看到递增的效果。
来自C standard的www.example.com部分6.5.2.4:

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

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

nfzehxib

nfzehxib5#

因为在变量的末尾加上会导致增量发生在运算之后。在变量之前加上会在运算之前完成加法。

相关问题