为什么num1++在printf()中不递增?
num1++
printf()
int num1 = 1; printf("num1=%d", num1++);
为什么打印num1=1而不是num1=2?
num1=1
num1=2
6ojccjat1#
++确实递增操作数...但在其后缀形式中,它在递增之前将计算为值**。++num1在递增后计算为值。
++
++num1
wlp8pajw2#
因为这句话
计算结果为num1。您可能需要执行以下操作:++num1其评估为num1 + 1。但是请注意,这两个表达式都将num1递增1。在下一个语句中计算num1将计算为递增的值。
num1
num1 + 1
在C中,为什么printf()中num1++不递增?num1++确实递增了num1,但它的计算结果是num1,而这个计算结果就是您传递给printf()的值。
2izufjch3#
它来自于++在变量后面,这将解决你的问题
printf("num1=%d", ++num1);
你做你的变量的方式会在打印出它的内容后递增,所以如果你在这个变量上做另一个printf你应该有正确的值,通过把它放在前缀的方式,它会在输出之前递增变量
w6mmgewl4#
后缀++运算符的计算结果为操作数的当前值,然后递增它。如果您再次以num1作为参数调用printf,您将看到递增的效果。来自C standard的www.example.com部分6.5.2.4:
printf
如果使用前缀++运算符,即++num1,则增量将反映在输出中。
nfzehxib5#
因为在变量的末尾加上会导致增量发生在运算之后。在变量之前加上会在运算之前完成加法。
5条答案
按热度按时间6ojccjat1#
++
确实递增操作数...但在其后缀形式中,它在递增之前将计算为值**。++num1
在递增后计算为值。wlp8pajw2#
因为这句话
计算结果为
num1
。您可能需要执行以下操作:
++num1
其评估为
num1 + 1
。但是请注意,这两个表达式都将
num1
递增1。在下一个语句中计算
num1
将计算为递增的值。总之
在C中,为什么printf()中num1++不递增?
num1++
确实递增了num1
,但它的计算结果是num1
,而这个计算结果就是您传递给printf()
的值。2izufjch3#
它来自于++在变量后面,这将解决你的问题
你做你的变量的方式会在打印出它的内容后递增,所以如果你在这个变量上做另一个printf你应该有正确的值,通过把它放在前缀的方式,它会在输出之前递增变量
w6mmgewl4#
后缀
++
运算符的计算结果为操作数的当前值,然后递增它。如果您再次以num1
作为参数调用printf
,您将看到递增的效果。来自C standard的www.example.com部分6.5.2.4:
++
运算符的结果是操作数的值。作为副作用,操作数对象的值会递增(即,将相应类型的值1添加到它)。如果使用前缀
++
运算符,即++num1
,则增量将反映在输出中。nfzehxib5#
因为在变量的末尾加上会导致增量发生在运算之后。在变量之前加上会在运算之前完成加法。