#include <stdio.h>
bool f()
{
}
int main()
{
if(f())
printf("default return true!\n");
else
printf("default return false!\n");
}代码如上:
结果是什么?
在vs2008下,会是
default return true!
在gcc下,(gcc version 4.3.4 20090804 (release) 1 (GCC))
会是
default return false!
不同编译器返回的不同。
个人粗心犯了这个错误,当然我们写这种返回bool类型的函数时要覆盖所有分支。
本文探讨了一个有趣的编程现象,在VS2008与GCC4.3.4两个不同编译环境下,一个未明确返回值的bool类型函数的默认返回值不同。在VS2008下,默认返回true,而在GCC下则默认为false。文章提醒开发者们在编写bool类型函数时要确保所有分支都有明确的返回值。

被折叠的 条评论
为什么被折叠?



