gpt4 book ai didi

c - 该程序的返回值为。 。 。 .至少可以说很奇怪

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

所以,我正在尝试汇编和指针,所以我决定做一些额外的事情,我创建了一个新的整数 d 并将函数交换分配给它:

#include <stdio.h>

int exchange(int *xp, int *yp, int *zp){
int x = *xp;
int y = *yp;
int z = *zp;

*xp = z;
*yp = x;
*zp = y;
}


int main(){
int a = 3;
int b = 12;
int c = 24;
exchange(&a, &b, &c);
printf("int a = %d, int b = %d, int c = %d : ", a, b, c);
int d = exchange(&a, &b, &c);
printf("\n int d = %d", d);
return 0;

}

所以,当我执行交换函数时,它按预期工作,交换寄存器中的值。除了。 。 。 .d 返回了一个奇怪的数字:6356768。

我不确定为什么 d 返回该值,但如果有人能解释它是如何发生的,我将非常感激。

最佳答案

您的问题是您没有从返回类型为 intexchange 返回任何内容。因此,您看到的 d 值是垃圾。尝试返回一个状态标志,如 1 表示成功。

#include <stdio.h>

int exchange(int *xp, int *yp, int *zp) {
int x = *xp;
int y = *yp;
int z = *zp;

*xp = z;
*yp = x;
*zp = y;
return 1;
}


int main(){
int a = 3;
int b = 12;
int c = 24;
exchange(&a, &b, &c);
printf("int a = %d, int b = %d, int c = %d : ", a, b, c);
int d = exchange(&a, &b, &c);
printf("\n int d = %d\n", d);
return 0;

}

您应该看到类似的内容,

int a = 24, int b = 3, int c = 12 :
int d = 1

请告诉我这是否有帮助!!

关于c - 该程序的返回值为。 。 。 .至少可以说很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52750299/

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