C&C++在函数使用上的差异

来源:互联网 发布:网络建设 ppt 编辑:程序博客网 时间:2024/06/04 01:00

C&C++在函数使用上的差异

Rains 2016/4/16 11:22:18

以下测试的GCC编译器是使用ubuntu14.0

VC编译器使用VC++6.0


程序

#include<stdio.h>int a(){    printf("I am a.\n");}int b(void){    printf("I am b.\n");}c(){    printf("I am c \n");    return 0;}d(void){    printf("I am d\n");    return 1.1;}void main(){    a(1,2,3,65555555);    b();    //b(1);    //b(1,2);    c();    d();    printf("return c = %d\n",c());    printf("return c = %d\n",d());}

1、在GCC编译器下

1.1.测试C语言函数

当b(); 替换成b(1);后如下图

结论小结:(1)函数可以不带类型,则默认为返回int类型(2)f() 表示为可以带任意参数,任意个数,fun(void) 表示不能带参数(3)主函数可以为void(测试过程中注意更改内容后要保存后再编译)

1.2测试C++函数

1.函数相同

2.无参数函数设置成int型

3.更改主函数为int 但是不添加return    更改a();调用为无参数类型    编译通过

结论小结:1、c++函数不支持无类型声明的函数,必须显式声明类型2、a();a(void);都不能带参数3、主函数不能为void类型问题指明函数类型,但是不说明返回值,int char下返回8 原因?

2、在vc++6下

2.1测试c函数

1、vc6下一次编译通过2、更改b();为b(1);      编译通过小结:(1)函数可以不带类型,则默认为返回int类型(2)f() 表示为可以带任意参数,任意个数,fun(void)与f()相同(3)主函数可以为void(测试过程中注意更改内容后要保存后再编译)

2.2测试c++

1、一次不通过warning C4508: 'c' : function should return a value; 'void' return type assumedwarning C4508: 'd' : function should return a value; 'void' return type assumederror C2660: 'a' : function does not take 4 parameters2、注释掉不带类型的c(); d();error C2660: 'a' : function does not take 4 parameters3、a();调用不带参数error C4716: 'a' : must return a valueerror C4716: 'b' : must return a value4、在int a(); 后添加返回值        运行成功小结:1、C++语言不支持无类型,或者非void但无返回值的函数2、f(); f(void); 都不支持传参3、主函数可以为void

总结GCC

C语言(1)函数可以不带类型,则默认为返回int类型(2)f() 表示为可以带任意参数,任意个数,fun(void) 表示不能带参数(3)主函数可以为voidC++1、c++函数不支持无类型声明的函数,必须显式声明类型2、a();a(void);都不能带参数3、主函数不能为void类型

总结VC6

C语言(1)函数可以不带类型,则默认为返回int类型(2)f() 表示为可以带任意参数,任意个数,fun(void)与f()相同(3)主函数可以为voidC++1、C++语言不支持无类型,或者非void但无返回值的函数2、f(); f(void); 都不支持传参3、主函数可以为void

问题?

指明函数类型,但是不说明返回值,int char下返回8 原因?
0 0
原创粉丝点击