提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
return语句
- 一、return语句后面跟表达式
- 二、return无返回
- 三、return返回的值和函数返回类型不一致
- 四、return语句执行后,后方仍然存在代码
- 五、存在分支语句,需考虑所有的返回值
一、return语句后面跟表达式
return语句后面可以是一个数值,也可以是一个表达式,如果是表达式则先执行表达式,在返回表达式的结果
int add(int a, int b) //形式参数,简称形参
{return a + b; //return后面如果是表达式,则先执行表达式,在返回表达式的结果
}
int main()
{int x = 10; int y = 20; scanf("%d%d", &x, &y); int sum = add(x, y); //真实传递给add函数的参数,我们叫实参(实际参数) printf("%d ", sum); return 0;
}
在add函数中我们返回a+b,此时我们需要先对a和b的值进行加起来,然后返回a+b的和
二、return无返回
也就是return后面什么都没有,直接写return,这种写法适用于函数返回类型是void的情况
test(int n)
{if (n < 0)return;
}
int main()
{test(-3);return 0;
}
在这里我们调用函数test,传入实参为-3,此时-3满足if条件,满足条件但是我们不需要返回任何东西,可以直接写一个return,表示什么都不返回。
三、return返回的值和函数返回类型不一致
提示:return返回的值和返回类型不一致,系统自动将返回的值隐式转为函数的返回类型
int test()
{return 3.14;
}
int main()
{int r = test();printf("%d ",r);return 0;
}
在这里返回类型是int类型,但是return返回的是小数3.14,此时返回的时候,系统自动将3.14转化为3,也就是小数点后面去掉了,返回值为整数3。
四、return语句执行后,后方仍然存在代码
return语句执行之后,函数就彻底返回,后面的代码不再执行了
int test()
{return 3.14; printf("hehe\n");
}
int main()
{int r = test(); printf("%d ", r); return 0;
}
在这里我们可以发现,return返回后面还有一句代码打印hehe的代码,但是return返回后,他后面的语句不再执行,所以也就没有打印
五、存在分支语句,需考虑所有的返回值
如果函数中存在if等分支语句,则要保证每种情况都要有return返回,否则就会出现下图一样的错误
在这里他就会出现警告,提醒你不是所有控件路径都会返回,也就是我们忽略了判断奇数的情况,正确代码如下
int test(int x)
{if (x % 2 == 0)return 0;elsereturn 1;
}
int main()
{int ret = test(3);printf("%d",ret);return 0;
}