学习C的过程中多次见到各种风格写法各异的main函数,故而时尔感到迷茫,下面总结一下我对main函数的认识。
(1)可以没有函数返回值类型,默认的是int,也可以没有return语句,默认会return 0,表示程序正常结束。
- #include <stdio.h>
- main () {
- printf ("hello, world\n");
- }
(2)标准返回值类型为int,结果有return语句给出,程序结束如果不写return语句的话,默认返回0。
- #include <stdio.h>
- int main (int argc, char * argv[]) {
- printf ("hello, world\n");
- return 0;
- }
(3)若返回值改为非int任意数据类型(char float double unsigned ...),引起编译警告,链接成功,运行也成功。
- #include <stdio.h>
- char main (int argc, char * argv[]) {
- printf ("hello, world\n");
- return 0;
- }
甚至将main函数的返回值定义为一个结构体,都可以通过编译,警告而已,运行成功,不过是对return语句要求比较严格。
- #include <stdio.h>
- struct A {
- char c;
- int i;
- float f;
- double d;
- };
- struct A main (int argc, char * argv[]) {
- printf ("hello, world\n");
- /* return 0; */
- }
对于共用体的问题我想也应该可以,么的进行测试。
(4)return语句中double float char int等类型都会被默认转换为main函数的返回值类型。且return语句本身不会引起警告。
- #include <stdio.h>
- char main (int argc, char * argv[]) {
- printf ("hello, world\n");
- return 0.2;
- }
建议写标准式如第二种情况:返回值int,return int。
奇怪微软会出返回void类型!!!
个人认识,欢迎批评指正!
- Using built-in specs.
- Target: i386-undermydesk-freebsd
- Configured with : FreeBSD/i386 system compiler
- Thread model: posix
- gcc version 4.2.1 20070831 patched [FreeBSD]
阅读(2859) | 评论(0) | 转发(0) |