Chinaunix首页 | 论坛 | 博客
  • 博客访问: 146638
  • 博文数量: 8
  • 博客积分: 342
  • 博客等级: 一等列兵
  • 技术积分: 109
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-02 09:31
文章分类

全部博文(8)

文章存档

2012年(8)

分类: C/C++

2012-03-02 10:37:22

    学习C的过程中多次见到各种风格写法各异的main函数,故而时尔感到迷茫,下面总结一下我对main函数的认识。


    
    (1)可以没有函数返回值类型,默认的是int,也可以没有return语句,默认会return 0,表示程序正常结束。
  1. #include <stdio.h>
  2. main () {
  3.     printf ("hello, world\n");
  4. }
    (2)标准返回值类型为int,结果有return语句给出,程序结束如果不写return语句的话,默认返回0。
  1. #include <stdio.h>
  2. int main (int argc, char * argv[]) {
  3.     printf ("hello, world\n");
  4.     return 0;
  5. }
    (3)若返回值改为非int任意数据类型(char float double unsigned ...),引起编译警告,链接成功,运行也成功。
  1. #include <stdio.h>
  2. char main (int argc, char * argv[]) {
  3.     printf ("hello, world\n");
  4.     return 0;
  5. }
     甚至将main函数的返回值定义为一个结构体,都可以通过编译,警告而已,运行成功,不过是对return语句要求比较严格。
  1. #include <stdio.h>
  2. struct A {
  3.     char c;
  4.     int i;
  5.     float f;
  6.     double d;
  7. };
  8. struct A main (int argc, char * argv[]) {
  9.     printf ("hello, world\n");
  10.     /* return 0; */
  11. }
    对于共用体的问题我想也应该可以,么的进行测试。 
    (4)return语句中double float char int等类型都会被默认转换为main函数的返回值类型。且return语句本身不会引起警告。
  1. #include <stdio.h>
  2. char main (int argc, char * argv[]) {
  3.     printf ("hello, world\n");
  4.     return 0.2;
  5. }


建议写标准式如第二种情况:返回值int,return int。




奇怪微软会出返回void类型!!!

个人认识,欢迎批评指正!
  1. Using built-in specs.
  2. Target: i386-undermydesk-freebsd
  3. Configured with : FreeBSD/i386 system compiler
  4. Thread model: posix
  5. gcc version 4.2.1 20070831 patched [FreeBSD]
阅读(2862) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:关于return与exit的认识

给主人留下些什么吧!~~