`
finux
  • 浏览: 200358 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

C语言中函数的返回值

    博客分类:
  • C
阅读更多

最近重读《The C Programming Language》。
在讲“函数与程序结构”这一章中,有这样一句话:“如果某个函数从一个地方返回时有返回值,而从另一个地方返回时没有返回值,该函数并不非法,但可能是一种出问题的征兆。
这句话觉得有些难以理解。

于是写了段测试代码,如下:

#include <stdio.h>

int f(int i) {
    if (1)
        return;
    else
        return 1;
}

main(void) {
    int i = -10;
    printf("%d\n", f(i));
}

/*
 * 本程序用gcc编译没有问题,
 * 运行结果如下:
 * -10
 */

 

没有想到结果竟然是这样的。
可是当自己拿g++编译时却发现这段程序不能通过编译,编译时产生如下的结果

main.c: In function ‘int f(int)’:
main.c:5: error: return-statement with no value, in function returning ‘int’

虽然在某种程序上,可以把C++理解成C的扩集,但是,从这个地方也可以看出C++与C在某些细节方面是有大的差别的。

2008-11-11 16:08

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics