int main(void)和void main的区别

新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
稍有积蓄, 积分 228, 距离下一级还需 272 积分
论坛徽章:0
int main ()
& &return 0;
void main ()
& &程序中无任何return
&&//return 0;
请问这两种main有什么区别?
我仅仅知道,在c++中,推荐使用int main。。。 但是如何具体的去深入理解这个呢?
我提问的背景是在linux程序下c++程序
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
论坛徽章:87
不就是返回值不一样吗。
小富即安, 积分 2699, 距离下一级还需 2301 积分
论坛徽章:11
LZ为何不找一本基础教程先系统的学习一下?
富足长乐, 积分 5698, 距离下一级还需 2302 积分
论坛徽章:221
int main符合标准
家境小康, 积分 1431, 距离下一级还需 569 积分
论坛徽章:7
C标准规定了C有两种运行环境,没记错的话,一个叫free standing一个叫hosted。其中一种环境要求有main函数且要求main返回一个整形数给运行环境当作返回状态。另一种环境没这样的要求,这种情况下不需要有main函数,即使有,也不要求返回整形。
上面是我根据自己记忆写的,请以C标准文档为准。
丰衣足食, 积分 915, 距离下一级还需 85 积分
论坛徽章:0
main() ,什么都不带,缺省认为是int,不是void。
没见过void main(),不过这么写了,大多编译器也能通过。
家境小康, 积分 1566, 距离下一级还需 434 积分
论坛徽章:6
发贴的是机器人吧?
论坛徽章:37
就现在而言,void main是错的,就酱
巨富豪门, 积分 20455, 距离下一级还需 19545 积分
论坛徽章:34
GLSL是void main
丰衣足食, 积分 917, 距离下一级还需 83 积分
论坛徽章:0
实际上,Linux下的进程运行完毕都会有一个返回值,范围【0~255】。
int main() 就是为了对应这个返回值。初学者,关于void main ()和int main(void)区别,有些不明白_c++吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:280,299贴子:
初学者,关于void main ()和int main(void)区别,有些不明白收藏
我看到《C++ primer plus 》上面写的是void main() 和int main(void) 逻辑上是一样的,但是,我认为 void main()是不返回任何值,而int main(void)是不接受任何参数,它们应该不是一样的啊,,请求吧里的C++高手解惑
上海洪庙文艺家具厂—专业实木家具定制厂家,设计制作一站式服务,省心放心!
windiws允许无返回值的main()
老版本和新版本的区别
我就知道int main是标准
区别在于函数是否有返回值int main表示该函数必须有返回值,即程序实现中一定要有return xx;字样void main()表示函数不需要返回值,一定不能有return xx字样否则程序编译都会出错
标准的只有int main()
vc是windows独占的开发工具
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 45, 距离下一级还需 155 积分
论坛徽章:0
程序要运行,首先要加载到内存中,是操作系统干了这个活,但是具体是操作系统的哪个程序或者进程干的呢?求解。
其次,关于main函数的返回值问题。首先说下我的经历。vc6.0中都编译通过,且程序运行也没有出什么错。用gcc编译的话,main函数的返回值是void,gcc会给出警告,但是程序貌似还是正常运行。但是在linux eclipse中,如果main的返回值是void,编译会通不过。
由此,引发了一个问题,main函数返回值有什么用?返回信息给这个程序的加载者还是操作系统?求大神解答。
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
家境小康, 积分 1963, 距离下一级还需 37 积分
论坛徽章:9
通常main函数的返回值都会作为进程的退出返回值,如果是void那么退出返回值就是汇编代码上下文相关的一个未知数(是什么都有可能,但并不是每次变化的随机值);而这个退出返回值,其他程序都可以通过api来获取(如果需要的话),当然这个支持显然是操作系统做的桥梁。
家境小康, 积分 1963, 距离下一级还需 37 积分
论坛徽章:9
还有一点需要特别说明,如果是学pascal出身的,由于pascal对“函数”和“过程”进行了区分,认为有返回值的是“函数”,没有返回值的是“过程”,而语法上对于“函数”又要求必须把返回值“利用”起来(赋值给谁,或者if消耗掉),否则不能通过编译。结果导致很多pascal出身的人,认为有返回值的东西,必须要有接收者,否则就是不符合逻辑的。但是实际上在最亲近指令执行上并非如此,返回值是否有接收者并不重要。我不知道LZ的疑惑是否也源于此,不过不管怎么说,LZ其实也不需要关心其返回值会被谁利用这个问题。
家境小康, 积分 1397, 距离下一级还需 603 积分
论坛徽章:1
本帖最后由 fly3ds 于
04:43 编辑
main返回值,可以在shell环境下可以打印出来,'echo $?‘
cmd下应该也可以打印出来,没研究过。
巨富豪门, 积分 22783, 距离下一级还需 17217 积分
论坛徽章:57
& & cmd下是 %errorlevel%
家境小康, 积分 1397, 距离下一级还需 603 积分
论坛徽章:1
试了下,确实如此。
论坛徽章:0
如果你不嫌弃我翻译得烂,那么可以看这里:
论坛徽章:0
丰衣足食, 积分 915, 距离下一级还需 85 积分
论坛徽章:0
带有Linux内核字样的书都有这方面的解释,比较薄的那本好象叫&&Linux内核设计与实现,开篇就讲了系统怎么启动进程,然后怎么控制。有兴趣的话可以看看这方面的书。
论坛徽章:17
& & main函数的返回值就是运行其程序的这个进程的状态码,命令行程序常常通过判断相应命令(进程)的状态码来判断相应命令是结果是否正常,VC++是允许void main这种形式的程序入口原型的,之所以允许这么做是有历史原因的,在最初的K&R C中main函数的原型为:main(),没有对返回值和参数做出明确规定,为此存在不同main函数原型扩展。K&R C第二版开始对此做出了更细致的规定,除了main()这样的原型以外又加入了带参数的原型:main(int argc, char *argv[]),又由于K&R C中允许Implicit declarations(未经声明而直接使用的将视为int类型,函数返回值也视为int)。main函数原型真正的定型是从C89(第一版ANSI C标准)开始的,此标准明确了int main(void)和int main(int argc, char *argv[])这两个原型,其它的原型是不允许的,考虑到对旧代码的兼容问题,许多编译器也允许K&R C中的原型,不带返回值类型的main视为void或int处理(由编译器决定)。从此以后main逐渐的定型下来,但部分编译器依然存在不同的扩展,比如说带有环境变量参数envp的扩展。总而言之,使用main最好严格按照标准来,否则代码不能保证可移植性。C++中main(){};int main(){};void main(){}有什么区别?
本回答由提问者推荐
var sogou_ad_id=731547;
var sogou_ad_height=160;
var sogou_ad_width=690;}

我要回帖

更多关于 stdio.h 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信