社区
C++ 语言
帖子详情
哪位高手知道void main和int main的区别?
iamwiner
2004-10-23 09:45:33
我买了一本书:清华大学出版社的<<捉虫历险记-常见C++ BUG大围剿>>
上面第一例子就说:虽然void main在所有的编译器中都可以通过
但效率低!是错误的!
还说在C++标准中main函数是int的而不是void的?
我查了一下MSDN和网络,都没有找到相关内容
因此,想问一下,void main和int main的区别到底有哪些?
...全文
2729
39
打赏
收藏
哪位高手知道void main和int main的区别?
我买了一本书:清华大学出版社的<> 上面第一例子就说:虽然void main在所有的编译器中都可以通过 但效率低!是错误的! 还说在C++标准中main函数是int的而不是void的? 我查了一下MSDN和网络,都没有找到相关内容 因此,想问一下,void main和int main的区别到底有哪些?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
39 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cxjddd
2004-10-25
打赏
举报
回复
区别就是 void main 是错误的:)
而 int main 是标准所要求的
hsuyuan
2004-10-25
打赏
举报
回复
受益匪浅!
airwudi
2004-10-25
打赏
举报
回复
我没有看到右上角有提问的字样啊?
到底怎么提问啊,麻烦各位帮忙一下
yangfasheng
2004-10-25
打赏
举报
回复
return 0
在自动生成的工程程序中也是默认为 return 0
Devillove
2004-10-25
打赏
举报
回复
return 0;
yangfasheng
2004-10-25
打赏
举报
回复
楼主所提出来的问题应该是不少初学者的困惑,
我也有过,即使是现在也不是很清楚,而是参照MS自动生成时的标准工程来写.
个人觉得这样的帖子发在这里应该没有什么有对的.
不知道楼上的为什么有这样的看法.
grayloach1
2004-10-25
打赏
举报
回复
to: airwudi(飞人) 提问请到各小区。遇到问题要先试着自己解决!
zeusnchen
2004-10-25
打赏
举报
回复
其实main函数可以看成是操作系统期待的一个入口函数,
操作系统认为这个函数应该是返回一个int返回值的,并且带有三个参数
既,它的原型应该是:
int main(int argc, char **argv, char **env)
一般的编译器可以接受任何形式的main函数,只要它的函数名字是main就可以了
而对main函数的具体签名不做要求
所以你写
void main()
void main(int argc, char **argv)
...
都是一样的,只是要明白,任何同
int main(int argc, char **, char **)
不一样的签名都可能有问题,例如,如果返回值是void
你可能无法正确获取程序退出时的状态等等
joseph0311
2004-10-24
打赏
举报
回复
int main()....
怒风in南京
2004-10-24
打赏
举报
回复
学习学习
纪俊
2004-10-24
打赏
举报
回复
正常退出就是return 0
不写也是这样子的
/////////////////////////////////////////////////////////////////////
欢迎大家使用编程文档手册V3.5,编程辅助类软件
集编程文档的收集、查询、浏览、编辑等功能于一体的辅助编程类软件。通过日积月累,相信本软件将给广大程序开发人员以及编程爱好者们带来很大的帮助。
下载地址:
天空软件站:http://www.skycn.com/soft/11906.html
华军软件园:http://www.onlinedown.net/soft/6496.htm
donrong
2004-10-24
打赏
举报
回复
正常退出到底是return 0还是1
好像众说纷纭呀
liyufeng1983
2004-10-24
打赏
举报
回复
大家说得都很对啊,还是用标准好。
athena301
2004-10-24
打赏
举报
回复
wegotnothingtolosebu(再教育,把穷人通通打昏!!)
I 服 了 YOU!!!!!
zengkun100
2004-10-24
打赏
举报
回复
pjincz(无定乾坤),真强!
lgwen
2004-10-24
打赏
举报
回复
又学了点东西
wegotnothingtolosebu
2004-10-24
打赏
举报
回复
使用int主要是可以给操作系统返回一个值,让操作系统明白这个程序执行的状态,比如执行这个程序后下一步可能要根据这个返回值做分支处理,如果是void的话就是一个哑巴程序,异常退出和正常推出无法区别,的确移植性很差。
int mian是标准的写法
pjincz
2004-10-24
打赏
举报
回复
对于一个函数,如int max(int a,int b)
那么编译器在运行a=max(5,7);时;
做的工作只是把寄存器ax复制给a
所以说对于一个没有return语句的int型变量
int dd(int x)
{
x=x*5;
}
当运行a=dd(3);时a的结果就是15
但如果有一个函数void maxv(int a,int b)
同样他没有return语句(或者有return语句没有返回值)
如果我们写出a=maxv(1,2)
编译器就会认出我们把一个无返回类型的函数赋值给一个变量
从而产生一个错误.
但是如果出现编译器无法识别原函数(只是一个假设)让编译器通过了编译,
那么结果会是和有返回值,无return的结果一样.
这里就是这种情况,操作系统默认一个程序的返回为int
但是我们的main却是void
所以操作系统得到的返回值是我们最后的操作结果中的ax!
一般来说操作系统会把返回的值丢弃掉!
也就是说,这时我们用int main()和void main()是没有区别的!
但是有些时候却不是这样的.大家都知道,我们一般来用0返回表示程序正常结束!
我们如果在其他程序中调用这个程序的话,
我想用来判断只程序是否正常的被执行时非常的重要的!
这时,用void main()就非常的有害了!
所以说,我个人坚决的反对用void main()
其实说用int main()累着什么人了吗!
也没有啊至少你还可以少写一个void,
只不过在程序的结束处要写上return 0罢了!
lonelydreamsym
2004-10-24
打赏
举报
回复
up
李海辰
2004-10-24
打赏
举报
回复
呵呵,我自己重写 mainCRTStartup 函数,然后调用我自己的入口点函数~~ 通常我喜欢用 void AppEntry()。呵呵~~至于 C Runtime 原来的入口函数嘛~~去 die 吧~~
加载更多回复(19)
4.8.一些杂散但值得讨论的问题
本课程零散讲了一些C语言中值得讨论的知识点。譬如
main
函数的传参和返回值、
void
类型、NULL宏定义、debug调试宏等。目的是进一步提升大家对C语言的理解深度,提升大家的实战编程能力。
前端热门技术之新版TypeScript入门学习到案例教程
其中涵盖了环境搭建、TypeScript中的各种类型(基本类型、数组、对象、元组、枚举、unknown、any、
void
、never等)、TypeScript的编译选项,以及TypeScript中面向对象的相关知识(类、抽象类和接口),教程最后通过...
FFmpeg音视频基础之C++系列第1:C++入门经典第10版
565.1
void
函数 575.2 传引用参数 575.3 使用过程抽象 595.4 测试和调试函数 595.5 常规调试技术 59第6章 I/O流——对象和类入门 606.1 流和基本文件I...
《c语言深度解析》第3、4章 存储类、生命周期、作用域、链接域,指针与函数
课程内容: 第3章: 存储类与auto、static、register关键字 指令、常量、变量的生命周期 ...
void
*指针类型 const与指针 函数指针 函数调用—栈的使用过程 回调函数和函数指针数组 指针与函数传参 递归函数 内联函数
MT5 EA编写速成教学
想编写EA苦于不
知道
如何下手! 3.能看懂代码的学员! 4.不啰嗦直接上干货! 5.固定框架式编程! 6.面向对象,面向函数式编程! //+------------------------------------------------------------------+
void
...
C++ 语言
64,639
社区成员
250,578
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章