Home
Categories
WIKI
Topic
User
LANGUAGE:
中文
English
露怯了……
deepin Talks
1079
views ·
6
replies ·
To
floor
Go
xliang9550
deepin
2015-08-13 05:37
Author
本帖最后由 xliang9550 于 2015-8-12 21:58 编辑
给新入校的研究生演示自己编写的《C语言程序设计现代方法》习题解答。
打开第一个源文件:Hello World,结果main()的函数原型写的是
void main(void)
几位新生异口同声说我“在这本《现代方法》之前一定接触过《C程序设计》”。
Reply
Like 0
Favorite
View the author
All Replies
rekols
deepin
2015-08-13 05:44
#1
#include
Reply
Like 0
View the author
xliang9550
deepin
2015-08-13 06:11
#2
说句实话,当时看到《现代方法》中竟然使用int main(void),确实感觉非常奇怪。
我心想,与其让main()返回int值并且额外加一句return 0;,还不如直接用void返回类型精简易读易懂。
但是,连续翻了N本外版书,都用的int main(void),我开始有些动摇了。心想,一本《现代方法》的作者有可能执迷不悟,不过那么多外版书的作者全都执迷不悟的概率就相对小得多了。
何况,void main(void)的写法我确实只在国内的教材上看到过。
于是对比了两本书的作者,K. N. King在国际上的名气好像确实比谭浩强大一些。
所以,做到《现代方法》后半本的习题的时候,我也开始改用int main(void),不过确实不习惯。然后又开始逐条修改前面的源程序。
怎知这个Hello World的源程序忘了改了……
Reply
Like 0
View the author
ArthurDeepin
deepin
2015-08-13 06:30
#3
在 C++ prime plus 第六版15页里谈到,使用void并且省略 return语句,并不是当前标准强制的一个选项,因此在有些系统上并不能工作。因此读者应该避免这种格式,而应该使用C++标准格式。然而C++标准也做出了让步,如果函数结尾没有遇到return语句,则认为以return 0;结尾。这个规则只适用于main()。
以上是C++的标准。不是C。
C里面有一个经典的写法:
main()
缺省的意思是认为返回int,对是否接收参数保持沉默。
C++淘汰了这种写法,并且()与(void)等效,并不是保持沉默。
Reply
Like 0
View the author
ArthurDeepin
deepin
2015-08-13 06:39
#4
本帖最后由 ArthurDeepin 于 2015-8-12 22:44 编辑
#include
void main()
{
using namespace std;
cout << "hello,world" << endl;
}
Copy the Code
$ g++ -o hello hello.cpp
hello.cpp:2:11: error: ‘::main’ must return ‘int’
void main()
^
Copy the Code
C++就是酱紫~~~
(⊙o⊙)…既然有标准这样推荐了,虽然不是C,风格上还是靠近吧
Reply
Like 0
View the author
SnDream
deepin
2015-08-13 06:54
#5
谭浩强现在都不写void main了
目前的C程序设计也都是int main
Reply
Like 0
View the author
xliang9550
deepin
2015-08-14 02:40
#6
C和C++是两种不同的编程语言,尽管C++在一定程度上可以看成C的超集,并且C++的部分特性backport回了C语言中。C++允许的规则未必在C中也允许。
在C99和C11中,要求不能省略main()函数的int返回类型,但允许省略return 0;,它会在main()执行结束时自动添加。但不管怎么说,C标准从未允许过void main()的写法。
Reply
Like 0
View the author
Please
sign
in first
New Thread
Popular Events
More
给新入校的研究生演示自己编写的《C语言程序设计现代方法》习题解答。
打开第一个源文件:Hello World,结果main()的函数原型写的是
void main(void)
几位新生异口同声说我“在这本《现代方法》之前一定接触过《C程序设计》”。