\我已经为我的测试创建了一个练习项目,但我似乎无法解决这个问题。我需要一个函数来获取输入,当在另一个函数中调用时,输入将用于解决问题。\这是我的代码
#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 );
- 在函数get()中,变量1、2、3、4存储在堆栈中,在该函数之外不可用
- 使用get()只能返回一个值
- 您必须将返回值存储到特定变量result1=get()
- 如果你想一次返回更多信息,你应该使用struct