| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3323 人关注过本帖
标题:看到很多人问过主函数返回值,我发个帖子解释下!
取消只看楼主 加入收藏
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
结帖率:100%
收藏
 问题点数:0 回复次数:11 
看到很多人问过主函数返回值,我发个帖子解释下!
-
现在应该这样写:
int main(void)             /* 标准写法 */
{
    printf("this is C program\n");
    return 0;
}


    在以前的标准中允许 main() ,它的返回值为 int ,如果你没有加上 return ,
编译器会为你加上。(这也并不代表可以写main(),在现在的标准中这也是不允许的)

void main()  是错误的!
    可能是因为无参数函数允许不写 void 原因,很对人甚至很多书上
都把主函数这样写:void main() 。(这有些误导读者)

int main(void)   // 完整的写不要偷懒喔。

-

[[italic] 本帖最后由 cosdos 于 2007-12-4 15:40 编辑 [/italic]]
搜索更多相关主题的帖子: 返回值 函数 帖子 解释 
2007-12-03 21:50
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
顶下,让更多人看看。

—>〉Sun〈<—
2007-12-03 22:09
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
原帖由 [bold][underline]wubizao[/underline][/bold] 于 2007-12-3 22:11 发表 [url=http://bbs.][/url]
我也支持这种写法
C PRIMER PLUS的经典介绍...



可能是因为无参数函数允许不写 void 原因,很对人甚至很多书上
都把主函数这样写:void main() 。(这有些误导读者)

这段话引用自 C Primer Plus

其它都是自己的话,分割线下面的是我在编译器上运行的提示。

—>〉Sun〈<—
2007-12-03 22:13
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
原帖由 [bold][underline]wubizao[/underline][/bold] 于 2007-12-3 22:17 发表 [url=http://bbs.][/url]
LZ误会了
我的意思是
应该大力推广象C PRIMER PLUS这种书,这样就不会有void main()了!!!


我只是说下,

C Primer Plus 经典!

[[italic] 本帖最后由 cosdos 于 2007-12-3 22:57 编辑 [/italic]]

—>〉Sun〈<—
2007-12-03 22:20
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
原帖由 [bold][underline]zbqf109[/underline][/bold] 于 2007-12-3 22:28 发表 [url=http://bbs.][/url]
标准就是标准,main()也是不符合标准的,标准里面只有两种main函数。
所有不写返回类型的函数都是错误的。
你让编译器默认返回int就和你写void main()是一个道理,void main()不是不可以,我们完全可以不根据返回值判断main ...



过去允许使用:
main()
{
    return 0;
}

int main(void)   才是标准,void main() 非标准。

/* 标准很早就有了,但像 C99 标准,还没有编译器完全支持。 */

-
-

[[italic] 本帖最后由 cosdos 于 2007-12-4 15:13 编辑 [/italic]]

—>〉Sun〈<—
2007-12-03 22:41
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
原帖由 [bold][underline]zbqf109[/underline][/bold] 于 2007-12-3 22:44 发表 [url=http://bbs.][/url]
标准里让写main()吗


我有说标准里有 main()

我是说以前允许 main(),这个也是一个事实。(你可以去查查以前的代码)

main() 是可移植的,return 只是函数返回值,主函数也是可以迪归的。

主函数结束后并不是程序结束,程序结束是要关闭输入输出流,释放内存的。
这些都是隐藏的。


-
-

[[italic] 本帖最后由 cosdos 于 2007-12-4 15:14 编辑 [/italic]]

—>〉Sun〈<—
2007-12-03 22:50
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
原帖由 [bold][underline]zbqf109[/underline][/bold] 于 2007-12-3 23:01 发表 [url=http://bbs.][/url]
不要说以前
以前void main()也是可行的



    在以前的标准中 main()  返回值为 int ,如果你不加上 return ,
那么编译器会为你加上 。

[[italic] 本帖最后由 cosdos 于 2007-12-4 15:16 编辑 [/italic]]

—>〉Sun〈<—
2007-12-03 23:05
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
原帖由 [bold][underline]zbqf109[/underline][/bold] 于 2007-12-3 23:12 发表 [url=http://bbs.][/url]
我说的是“可行”
不符合标准不一定不可行
我还是那句话,你让编译器给你自动返回一个0作为main()的返回值,是不好的,但不是不可行
我不信这个程序能在你的编译器上通过:#include

fun();

main()
{
      fun();
      s ...



    我也从来没有让我的编译器把 main() 自动返回0,我使用的是 DEV-C++,
完全通过。

#include <stdlib.h>
fun();
main()
{
      fun();
      system("pause");
}
fun()
{
}

//-------------- 请按标准写主函数 -------------------------------------//
int main(void)  // 标准写法
{
    return 0;
}

[[italic] 本帖最后由 cosdos 于 2007-12-4 15:18 编辑 [/italic]]

—>〉Sun〈<—
2007-12-03 23:16
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
int main(void)
{
    return 0;
}

很多编译器还没有严格要求这样做。

[[italic] 本帖最后由 cosdos 于 2007-12-4 15:05 编辑 [/italic]]

—>〉Sun〈<—
2007-12-03 23:20
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
原帖由 [bold][underline]zbqf109[/underline][/bold] 于 2007-12-3 23:27 发表 [url=http://bbs.][/url]
同样是Devc,我这里提示很多错误
jackys2006 的 《[原创]关于main()函数》中的一句话:
main()
这种形式开始。C90标准允许这种形式,但是C99标准不允许。因此即使你当前的编译器允许,也不要这么写。

好了,我就说这么多,这个 ...


你没有包含  stdlib.h 吧!

文件必须包含!因为函数是在库中的!

[[italic] 本帖最后由 cosdos 于 2007-12-3 23:33 编辑 [/italic]]

—>〉Sun〈<—
2007-12-03 23:31
快速回复:看到很多人问过主函数返回值,我发个帖子解释下!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033326 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved