为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我把return crif;改成printf("%d\n", crif);会出错

#include <stdio.h>
int getGirth(int a,int b,int c)
{
    if( (a+b)<=c || (a+c)<=b || (b+c)<=a )   //判断是否为三角形
    {
        printf("不构成三角形\n");
        return 0;                               
    }
    else
    {
      int cirf = a + b + c;     //计算三角形周长
      printf("%d\n", cirf);
    } 
}
int main()
{
    /* 定义三角形三边长 */
    int a, b, c;
    a = 5;
    b = 4;
    c = 3;
    printf("三角形的周长是:%d\n", getGirth(a, b, c));  //调用周长函数
    return 0;
}

这样的输出结果是

12

三角形的周长是3

正在回答

3 回答

原理是,main将3个值传给getGirth这个函数。getGirth处理完后,然后return,是将值在返回给main函数。没返回的话,main后面拿不到值。

1 回复 有任何疑惑可以回复我~

因为没有返回值,你在

把return crif;改成printf("%d\n", crif);

的下一行加上 return 0;

就可以运行了。

0 回复 有任何疑惑可以回复我~
#1

Ibuki_suga 提问者

这样输出就会变成 12 三角形的周长:0
2018-10-19 回复 有任何疑惑可以回复我~
#2

慕粉0247298809 回复 Ibuki_suga 提问者

对的,return 的返回值 一定要是crif,要不然函数的调用值不会返回mian函数里
2018-11-01 回复 有任何疑惑可以回复我~

应该是函数没有返回值报的错,不要删那个return试试看

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么我把return crif;改成printf("%d\n", crif);会出错

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信