如何返回多个值并将它们存储在main()函数中?

sha*_*hid 1 c function return-value

我想从函数返回两个或多个值,并希望将这些值存储到main()函数中.我正试图通过以下代码来做到这一点.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num1, num2, s, p;
    printf("Enter tow numbers: ");
    scanf("%d %d", &num1, &num2);
    p = function(num1, num2);
    s = function(num1, num2);
    printf("Sum is: %d\nProduct is: %d", p, s);
    return 0;
}

int function(int x, int y)
{
    int sum, product;
    sum = x+y;
    product = x*y;
    return product, sum;
}
Run Code Online (Sandbox Code Playgroud)

如果我输入两个数字,说5 2我希望我的结果是:

Sum is: 7
Product is: 10
Run Code Online (Sandbox Code Playgroud)

但我两个都得到7分.如何获得所需的输出?

and*_*and 5

C不允许您定义返回单个类型的多个类型或多个实例的函数.但是,您可以使用结构将类似或不同类型的变量捆绑到一个新的用户定义类型中.在这种情况下,您可以执行以下操作:

#include <stdio.h>
#include <stdlib.h>

typedef struct myStruct {
    int sum;
    int product;
} myStruct;

myStruct function(int x, int y) {
    myStruct val;
    val.sum = x+y;
    val.product = x*y;
    return val;
}

int main() {
    int num1, num2;
    myStruct result;
    printf("Enter tow numbers: ");
    scanf("%d %d", &num1, &num2);
    result = function(num1, num2);
    printf("Sum is: %d\nProduct is: %d", result.sum, result.product);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

此外,虽然上面的程序在语法上是正确的,但,函数返回中的结果只返回逗号分隔值集合中的最后一个值.通常,不与a一起使用return; for然而,当它在循环中使用时它会非常方便.