C语言 函数在另一个函数中调用时返回不同的数字

vuktfyat  于 2022-12-03  发布在  其他
关注(0)|答案(2)|浏览(168)

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

#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语句放在函数中时,它可以工作,但是当我使用函数获取输入时,我得到的是不同的数字

xxb16uws

xxb16uws1#

在函数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 );
j2datikz

j2datikz2#

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

相关问题