返回代码误解

时间:2017-02-16 11:40:30

标签: c

#include<stdio.h>
int calsum(int x,int y,int z);

int main()
{
    while(1)
    {
        int a, b, c, sum;
        printf("Enter any3 numbers");
        scanf("%d%d%d", &a, &b, &c);
        sum = calsum(a, b, c);
        printf("sum=%d\n", sum);
    }
}

int calsum (int x, int y, int z)
{
    int d;
    d = x + y + z;
    if(d > 2)
        return d;
    else
        d = 1;
    return;
}

当我以-1 1 0提供输入时,我的输出应为1,但它正在提供0
为什么? 这是关于添加三个数字

2 个答案:

答案 0 :(得分:5)

 int calsum (int x,int y,int z)
 {
   return ;
 }

声明并定义了您的函数以返回int,但您的return语句是无表达式的。这是一种语言约束违规。

程序的行为未定义。在这种情况下,有趣的结果可能会产生结果。

答案 1 :(得分:0)

更新您的calsum功能,如下所示。你在其他部分分配d = 1但没有返回它。

 int calsum (int x,int y,int z){
     int d;
     d=x+y+z;
     if(d>2)
        return d;
     else
        return 1;
     }