练习1-1:
在你自己的系统中运行“hello, world”程序。再有意去掉程序中的部分内容,看看会得到什么出错信息。
原程序
#include <stdio.h>
int main()
{
printf("Hello, world\n");
return 0;
}
1. 首先书里定义main函数都不写int,而现在的书和教程都会是“int main()”。所以想试试去掉int还能不能编译。
hello01.c:2:1: warning: return type defaults to 'int' [-Wimplicit-int]
main()
^~~~
Hello, world
结果是可以输出“Hello world”,也就是可以编译,但是会告警你没有指定类型声明。
2. 教程里也没有“return 0;”这一行代码,是不是因为当时C是在UNIX操作系统上运行的,后来C逐步发展,所以变成现在我们这样由int main()主函数开始执行,到以return 0;终止函数的?如果我们去掉return 0;会有什么信息?
去掉“return 0;”之后,居然正常输出了“Hello, world”,也没有报错信息。这是怎么回事呢?我到虚拟机上的Linux系统中运行,也是一样,可以编译,正常输出了“Hello, world”。先把问题放这里,可以思考思考。咱平时写代码还是要规规矩矩地按照结构规范来写,绝对不能省掉return 0。
3. 如果我们把代码第一行的“#include <stdio.h>”(包含标准库的信息)去掉,会得到什么结果呢?
hello03.c: In function 'main':
hello03.c:4:5: warning: implicit declaration of function 'printf' [-Wimplicit-functi