c-当在另一个函数中调用时,函数返回不同的数字



\我已经为我的测试创建了一个练习项目,但我似乎无法解决这个问题。我需要一个函数来获取输入,当在另一个函数中调用时,输入将用于解决问题。\这是我的代码


#include <stdio.h>
int get()
{
int one,two,three,four;
scanf("%d %d %d %d", &one, &two, &three, &four);
return one,two,three,four;
}
int add()
{
int one,two,three,four;
int result1, result2, result3;
get();
result1 = one + two;

if (result1 == three)
{
result2 = four - three;
result3 = result2 + four;
printf("Added %d, 5th number is %d", result2, result3);
}
else
{
printf("error, %d %d %d %d", one, two, three, four);
}

}
int main()
{
add();

return 0;
}

当我把scanf语句放在函数中时,它就起作用了。但当我使用该功能获取输入时,我会得到不同的数字

在函数get的返回语句中

return one,two,three,four;

有一个带有逗号运算符的表达式。它的值是最后一个操作数的值。也就是说,函数返回变量four的值。

此外,返回的值不会在调用者中使用。因此,您正在处理函数add中未初始化的变量。

如果需要返回四个值,则通过引用的参数返回它们。例如

void get( int *one, int *two, int *three, int *four;)
{
scanf("%d %d %d %d", one, two, three, four);
}

并调用类似的函数

get( &one, &two, &three, &four );

或者函数可以返回一个整数,该整数将表示输入是否成功,例如

int get( int *one, int *two, int *three, int *four;)
{
return scanf("%d %d %d %d", one, two, three, four) == 4;
}

在执行计算之前,可以在函数add中检查返回值。

请注意,函数add不返回任何内容。因此将其返回类型声明为void

void add( void );
  1. 在函数get()中,变量1、2、3、4存储在堆栈中,在该函数之外不可用
  2. 使用get()只能返回一个值
  3. 您必须将返回值存储到特定变量result1=get()
  4. 如果你想一次返回更多信息,你应该使用struct

相关内容

  • 没有找到相关文章

最新更新