gpt4 book ai didi

c - C 中前缀递增和后缀递增之间的差异(++a 和 a++)

转载 作者:行者123 更新时间:2023-11-30 21:39:52 25 4
gpt4 key购买 nike

据我了解,a++是后缀递增,它给a加1并返回原始值。++a 是前缀递增,它在广告上加 1 返回新值。

我想尝试一下,但在这两种情况下,它都会返回新值。我有什么误解吗?

#include <stdio.h>
int main() {
int a = 0;
int b = 0;

printf("%d\n", a); // prints 0
printf("%d\n", b); // prints 0

a++; // a++ is known as postfix. Add 1 to a, returns the old value.
++b; // ++b is known as prefix. Add 1 to b, returns the new value.

printf("%d\n", a); // prints 1, should print 0?
printf("%d\n", b); // prints 1, should print 1

return 0;
}

最佳答案

请记住,C 和 C++ 是具有一定表现力的语言。

这意味着大多数表达式都会返回一个值。如果您不做任何具有这种值(value)的事情,它就会消失在时间的沙子中。

表达式

(a++)

将返回a之前的值。正如前面提到的,如果它的返回值没有立即被使用,那么它就和

一样
(++a)

返回新值。

printf("%d\n", a++); // a's former value
printf("%d\n", ++b); // b's new value

上述语句将按您的预期工作,因为您正在使用此处的表达式。

下面的也可以工作。

int c = a++;
int d = ++b;

printf("%d\n", c); // a's former value
printf("%d\n", d); // b's new value

关于c - C 中前缀递增和后缀递增之间的差异(++a 和 a++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27481190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com