gpt4 book ai didi

编译器中的冲突类型错误

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

我的问题是我不断收到相同类型的错误,但我不明白为什么。我相当确定我在 main 函数之前声明并定义了它。

这是我的代码。

#include <stdio.h>
void functn (int x);

int functn(int x, int result){
result = (x-1)+2;
if (x <= 0){
return 0;
}
else{
return result;
}
}

int main (){

int x, y;
printf ("Enter the value of x: ");
scanf ("%d", &x);
y = f(x);
printf ("%d", y);
return 0;
}

最佳答案

您在 functn 中遇到了一些问题。主要传递结果。当您将结果传递给 functn 时,functn 会收到 result副本,这是获取修改值的唯一方法就是返回修改后的值。您还可以传递一个指向 result 的指针并更新 functn 中的 *result (类似于您现在所做的),这样就无需返回一个值,因为对结果的任何更改都将在调用函数中可见(此处为main())。此外,不需要全局变量。只需将变量声明为 main 的本地变量,并根据需要作为参数传递。

以下示例声明 functn(下面简称为 f)来执行两者,并获取指向 result 的指针(例如 &result)作为参数,同时还返回 result,这允许您指定或不指定返回值,但始终具有 result< 的更新值 回到 main,例如

#include <stdio.h>

int f (int x, int *result);

int main (void){

int x, y, result = 0;
printf ("Enter the value of x: ");
if (scanf ("%d", &x) != 1) {
fprintf (stderr, "error scanf, invalid conversion.\n");
return 1;
}

y = f (x, &result);
printf ("y = f(%d) => %d\n", x, y);

return 0;
}

int f (int x, int *result)
{
*result = (x-1)+2;

if (x <= 0)
return 0;

return *result;
}

示例使用/输出

$ ./bin/yfx
Enter the value of x: 5
y = f(5) => 6

仔细检查一下,如果有疑问请告诉我。

关于编译器中的冲突类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43714844/

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