gpt4 book ai didi

c - C 中带和不带指针的预自增运算符

转载 作者:行者123 更新时间:2023-11-30 16:10:31 25 4
gpt4 key购买 nike

我在 ubuntu 18.04 上运行 gcc 7.4.0。我编译并运行了以下代码

#include<stdio.h>

int main() {
int *p;
int a[2];
a[0] = 100;
a[1] = 200;
p = a;
int b = 10;
printf("%d\t%d", ++*p, *p);
printf("\n%d\n", *p);

printf("%d\t%d", ++b, b);
printf("\n%d\n", b);
return 0;
}

我得到这个输出:

101     100
101
11 11
11

为什么预自增运算符对于指针指向的整数值和普通整数值的行为不同?

最佳答案

请参阅此警告。这是一种未定义的行为。这意味着任何事情都可能发生。

prog.cc: In function 'int main()':
prog.cc:10:20: warning: operation on '* p' may be undefined [-Wsequence-point]
10 | printf("%d\t%d", ++*p, *p);
| ^~~~
prog.cc:13:20: warning: operation on 'b' may be undefined [-Wsequence-point]
13 | printf("%d\t%d", ++b, b);
| ^~~
prog.cc:13:20: warning: operation on 'b' may be undefined [-Wsequence-point]

您应该使用 -pedantic 选项编译您的程序。

关于c - C 中带和不带指针的预自增运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58870409/

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