C++中return 0及void用处
我不打的话,编译一样会过啊
还有函数前有没有void也一样能过啊
还有,main前面为什么用int
return 0及void用处是?
谢谢 展开
在C中,一个函数如果没有返回值也不声明为void类型,那么返回值默认为int。在一些情况,可以return 0也不return 0一样,因为一些编译器简化代码写作负担,没有return 0就假设你return的是0,就是说隐含的帮你做了。关于为什么return的是0我还会说的。
当然,如果你在c++里面声明一个函数但是却不写包括void的任何返回值类型,这样是不对的。一般是个错误,至少也会是个警告,当然了,也说不定会有一些不那么严格的编译器允许编译,但是这样是不建议的,在c++,因为c++没有默认int的规定(相比c语言)。
至于main的返回值的问题,这又是一群国内混蛋问题,实际上包括最经典的那本出版于70年代的《c programming language》,也就是C语言的创始人的那本书,就没有main的返回值是void的形式。那个时候c语言喜欢把main写成无返回值,因为c语言规定一个函数如果无返回值类型,那么返回值类型默认为int。而C++后来规范了C语言,不允许一个函数无返回值(除了构造函数和析构函数),如此之后有些家伙就非要写一个void的返回值类型,实际上这是极其不标准的。
在很多编译器上,例如gcc,intel c,如果你把main写成void的返回值,会直接报错拒绝编译。为什么这也是有典故的,因为从unix系统开始,程序就规定应该有一个返回值。这个返回值可以代表程序是否运行成功,假设返回0就代表程序运行成功无错,返回其他值代表程序运行出现问题,而返回的数值是问题的错误代码。这是一个古老的习俗,在unix/linux下可以用echo $?命令查看上一个运行的程序的返回值。在Windows下甚至有一个名字为EXIT_SUCESS的宏,值为0,你在部分程序可以看到main函数的最后是return EXIT_SUCESS;代表程序运行成功。所以为了这个习俗,也应该避免void返回值的main函数的出现。
return 的作用:
return返回一个数值的意思就是把return <表达式>后面表达式的值返回给调用他的函数。
return的用法如下:
int sum(int i,int j)
{
return i+j;
printf ("这个语句不会被执行,因为该子函数执行到上面的return语句就无条件结束了");
}
main()
{
int a=10,b=11,c;
c=sum(a,b);
printf("%d",c);
}
程序的输出为:
21
这个21从何而来呢main函数调用sum(a,b)函数时将a的值赋给i,b的值赋给j,上面说了return i+j;会计算i+j的值也就是结果等于21,并将21带回给调用它的函数,即c=sum(a,b);相当于c=21,这个21 就是由sum(a,b)中的return反回来的。
void的作用:
void中文翻译为"无类型"。常用在程序编写中对定义函数的参数类型、返回值、函数中指针类型进行声明。
void的字面意思是"无类型",void *则为"无类型指针",void *可以指向任何类型的数据。
在C语言中,凡不加返回值类型限定的函数,就会被编译器作为返回整型值处理。但是许多程序员却误以为其为void类型。
void的用法就是加在类名前,修饰类名的;
return 0及void 就是告诉电脑这个程序正常结束了返回一个0,否则说明没有正常结束
比赛指的是竞赛吗?还是计算机等级考试啊
我没发现输出0啊?
当然返回值可以应用的地方有很多,比如有的时候返回-1表示出错,返回0表示正常运行等等,这需要后面的学习来加深了解
我没发现输出0啊?
因为你写的是void,所以虽然有返回值但是没有接收返回值的变量,你可以做个试验,写一个
int test(){……;return 0}
void main(){int a;
a=test;
cout>>a;}把返回值放到a里面,就能看见了