两者之间有什么区别
while
和
#include <stdio.h>
int f(int x){
return x*x - 3;
}
int main(){
int x = 4;
printf("f(%d) = %d\n", x, f(x));
return 0;
}
因为这两个编译没有错误(使用gcc),并且两个都正常工作。 第一次回来真的很重要吗?
答案 0 :(得分:8)
第二个代码段调用undefined behaviour。
一个到达结尾}
并且在调用方中使用返回值的函数将调用未定义的行为。
引用C11
,第6.9.1章
如果到达终止函数的
}
,并且函数调用的值由 调用者,行为是不确定的。
是的,对于功能
void
以外的任何东西(其值将在调用方中使用),必须包含带有表达式的return
语句,该表达式具有一个
类型与函数的返回类型相同。void
可以有一个return
语句,不带任何表达式。但是,this can be also be omitted没有任何麻烦。注意:仅仅因为“您的”编译器(设置)会编译代码并生成二进制文件,并不意味着该代码正确。使用所有警告标记和严格检查,它们将为您节省很多麻烦。