大家帮忙看看,说说why会这样(结帖)
我们知道,如果一个函数的specification中指定了返回值类型,那么在函数体中要给定一个返回值。我的问题是:如果由于某些原因,程序的逻辑恰好没有在函数体中指定返回值,此时函数的调用者将得到什么?是否有一定的规律可循?我感到困惑的是,在Solaris10平台上,我得到了两种完全相反的结果:
/home/cris/tmp$ cat testcase.cpp
#include <stdio.h>
#include <stdlib.h>
bool myfunc(int p)
{
if (p == 1) {
return false;
} else if (p == 2) {
return false;
}
}
int main()
{
try
{
if (myfunc(3)) {
printf(" ... return TRUE ...\n");
} else {
printf(" ... return FALSE ...\n");
}
} catch (...) {
printf(" ... Exception is caught ...\n");
}
return 0;
}
/home/cris/tmp$ rm -rf a.out
/home/cris/tmp$ /opt/spro12/SUNWspro/bin/CC -g ./testcase.cpp
/home/cris/tmp$ ./a.out
... return FALSE ...
/home/cris/tmp$
/home/cris/tmp$ rm -rf a.out
/home/cris/tmp$ /opt/spro12/SUNWspro/bin/CC ./testcase.cpp
/home/cris/tmp$ ./a.out
... return TRUE ...
[[it] 本帖最后由 c_acceleration 于 2008-5-4 14:12 编辑 [/it]]