gpt4 book ai didi

c - 为什么下面的程序可以运行

转载 作者:行者123 更新时间:2023-11-30 20:19:08 24 4
gpt4 key购买 nike

#include <stdio.h>

void circle(int *,int *,int *);

int main() {
int x,y,z;
printf("please enter 3 numbers = ");
scanf("%d %d %d",&x,&y,&z);

circle(&x,&y,&z);

printf("x=%d y=%d z=%d",x,y,z);


}

void circle(int *a,int *b ,int *c) {
int *d;
d=*a;
*a=*b;

*b=*c;
*c=d;
}

上面的代码是使用函数循环交换x,y,z的值。在上面的代码中,我使用了 *dd 是一个 无符号 整数,即使在

d=*a 

如果x(或a)= -1,则代码也有效。

最佳答案

void circle(int *a, int *b, int *c) {
int *d;
d = *a;
...

这里d = *a;将一个int放入一个指针中。

体面的编译器应该发出如下警告:

'=':'int *' 与 'int' 的间接级别不同

由于 int 的大小通常小于或等于指针的大小,因此您的代码仍然可以工作,但这是未定义的行为,它可能无法在其他平台上工作。未定义的行为包括“表面上工作正常”。

关于c - 为什么下面的程序可以运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51543234/

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