main前面的是类型标识符,也就是类型名,其决定的是函数返回值的类型,int指有返回值且返回值为整型,void表示“空"即没有返回值。
很多时候函数是不需要返回值的,只作为语句执行就完成任务了,比如主函数main常常就是;有返回值的函数通常出现在表达式中,int i=rand();
rand()返回一个随机值替代自身位置赋值给i,有返回值的函数定义其返回值类型可以各式各样,有int有char有float有double。
对于主函数,我们常常只要程序执行它,并不需要它的返回值,所以有人用int main加上return 0,有的直接用void main.。但最后制定标准的人说了:"main’must return ‘int’,其他的乱七八糟的返回值类型都不行,void也不行,以此盖棺定论。只返回int,这大概就是main作为一个主函数的尊严,本身没什么意义就是,毕竟return0都不需要你自己加,编译器就代劳了。
所以对于其他花花绿绿的函数,主函数main前只能动加int(就好比主函数只能用main表示一样,只是这么规定而已),老的编译器可能还能用void,但现在的严的编译器大多默认int,用void会报错。
顺便说一句,void main()或void main(void)是写程序的人根据函数原型自行发明的,C和C+标准中可从来没有定义过void main。
再偷偷告诉你,如果你受不了强权的话你可以直接用main()省略int,不过这也,只是以前的写法,早晚会在渐渐的标准化中被淘汰,当然编译器是不大会报错的就是了。
不论返回值数据类型或者参数数据类型如何都不影响你在函数(不论主函数还是其他函数)主体内使用其他各种数据类型。*
上一个奇葩程序:
#include
int main()
{
float a;
double b;
char c;
float xy(short x,double y,int z);//函数定义在主函数之前时可省略此声明语句。
std::cout< int main()
{
return 0; /* 新标准主函数的返回值这条语句可以省略 */
}