请问这是什么意思啊,这种写法跟int main()或者void main()有什么区别啊
11 个解决方案
#1
晕了,怀疑你学过C语言吗?
int main()意思是这个函数必须返回一个整型的数.
所以函数中最后要有返回值.如
int main(){
……
return 0;
};
而void main()是没有返回值,故不需要最后一句!
void main(){
……
};
int main()意思是这个函数必须返回一个整型的数.
所以函数中最后要有返回值.如
int main(){
……
return 0;
};
而void main()是没有返回值,故不需要最后一句!
void main(){
……
};
#2
樓上說得很對。
補充一點:
int main(void) 和 int main() 沒有區別。
補充一點:
int main(void) 和 int main() 沒有區別。
#3
这么回事啊,
受教了
谢谢
受教了
谢谢
#4
再补充一点:
main()对应int main(void)
main()对应int main(void)
#5
谢谢楼上各位的解释
结贴了。。。。。。。。。。
结贴了。。。。。。。。。。
#6
不好意思,在函数的定义中,其实是有很大差别的。
声明int fun();在以后处理中可以向其传递任何参数都不会报错,编译器不检查。
但声明int fun(void);编译器要检查其传递参数,不能有参数传进来;
任何语言定义肯定都有些微的差别,我们要多看书实践,不能一概而论。
声明int fun();在以后处理中可以向其传递任何参数都不会报错,编译器不检查。
但声明int fun(void);编译器要检查其传递参数,不能有参数传进来;
任何语言定义肯定都有些微的差别,我们要多看书实践,不能一概而论。
#7
如
int fun()
{
printf("Hello,world\n");
return 0;
}
int main()
{
fun("The world is big");
return 0;
}
是可以通过编译的,并且可以运行。但int fun(void);有些编译器是不可以的,有些会给一个warning。
main函数也可以调用
int main()
{
printf("Hello,world");
main();
return 0;
}
比较一下
int main(void)
{
printf("Hello,world");
main();
return 0;
}
请运行
int fun()
{
printf("Hello,world\n");
return 0;
}
int main()
{
fun("The world is big");
return 0;
}
是可以通过编译的,并且可以运行。但int fun(void);有些编译器是不可以的,有些会给一个warning。
main函数也可以调用
int main()
{
printf("Hello,world");
main();
return 0;
}
比较一下
int main(void)
{
printf("Hello,world");
main();
return 0;
}
请运行
#8
另外说下标准的main原形是
int main(int argc, char *argv[]);
其他的都是编译自行扩展支持而已。
int main(int argc, char *argv[]);
其他的都是编译自行扩展支持而已。
#9
多谢楼上的啊
真的长知识了
谢谢
真的长知识了
谢谢
#10
一楼后半部分说得对..>
#11
事实上,前面的区别还是很大的。
在支持K&R风格的编译器上,为了与K&R兼容,编译器在遇到空参数列表的函数时,假设这是旧式风格的函数,因而不检查参数
(旧式的函数无所谓函数原型,一般只要声明就行,所以即使有原型,也是 function();
而函数的实现如下)
注意参数列表的位置。
而标准化后的C语言,必须要求函数有原型,比如main函数作为C程序的入口函数,原型为:
而当我们写成:
int main()
时,编译器由于要兼容K&R,变认为这是旧式的函数从而不会报错;
main()或者main(void)时,便是由于大多数编译器将函数默认为返回int型(注意,ANSI没有要求编译器必须这么做!!),
从而引发默认行为(注意前者还有K&R原因);此时,您的main函数仍需要有返回值;比如cl(VC的编译器)
还有人会把main写成:
void main(void),或者void main()
在低警告级别时,这可能会通过编译,但是警告级别接近ANSI标准时,这就是一个警告,编译器会说这不是标准main函数,比如说main需要int型返回值。
在支持K&R风格的编译器上,为了与K&R兼容,编译器在遇到空参数列表的函数时,假设这是旧式风格的函数,因而不检查参数
(旧式的函数无所谓函数原型,一般只要声明就行,所以即使有原型,也是 function();
而函数的实现如下)
int function()
int arg1, char * arg2;
{
/* Do something about the arguments */
return value;
}
注意参数列表的位置。
而标准化后的C语言,必须要求函数有原型,比如main函数作为C程序的入口函数,原型为:
int main(void); /* Someone like to write it like that, but it was not the real main, and we'd better DO NOT use main like that */
/* But this is one of the main function, much better than int main() and just main() */
int main(int argc, char * argv[]); /* For normal using, tiny one */
int main(int argc, char * argv[], char * envp[]); /* The real main, full version */
而当我们写成:
int main()
时,编译器由于要兼容K&R,变认为这是旧式的函数从而不会报错;
main()或者main(void)时,便是由于大多数编译器将函数默认为返回int型(注意,ANSI没有要求编译器必须这么做!!),
从而引发默认行为(注意前者还有K&R原因);此时,您的main函数仍需要有返回值;比如cl(VC的编译器)
还有人会把main写成:
void main(void),或者void main()
在低警告级别时,这可能会通过编译,但是警告级别接近ANSI标准时,这就是一个警告,编译器会说这不是标准main函数,比如说main需要int型返回值。
#1
晕了,怀疑你学过C语言吗?
int main()意思是这个函数必须返回一个整型的数.
所以函数中最后要有返回值.如
int main(){
……
return 0;
};
而void main()是没有返回值,故不需要最后一句!
void main(){
……
};
int main()意思是这个函数必须返回一个整型的数.
所以函数中最后要有返回值.如
int main(){
……
return 0;
};
而void main()是没有返回值,故不需要最后一句!
void main(){
……
};
#2
樓上說得很對。
補充一點:
int main(void) 和 int main() 沒有區別。
補充一點:
int main(void) 和 int main() 沒有區別。
#3
这么回事啊,
受教了
谢谢
受教了
谢谢
#4
再补充一点:
main()对应int main(void)
main()对应int main(void)
#5
谢谢楼上各位的解释
结贴了。。。。。。。。。。
结贴了。。。。。。。。。。
#6
不好意思,在函数的定义中,其实是有很大差别的。
声明int fun();在以后处理中可以向其传递任何参数都不会报错,编译器不检查。
但声明int fun(void);编译器要检查其传递参数,不能有参数传进来;
任何语言定义肯定都有些微的差别,我们要多看书实践,不能一概而论。
声明int fun();在以后处理中可以向其传递任何参数都不会报错,编译器不检查。
但声明int fun(void);编译器要检查其传递参数,不能有参数传进来;
任何语言定义肯定都有些微的差别,我们要多看书实践,不能一概而论。
#7
如
int fun()
{
printf("Hello,world\n");
return 0;
}
int main()
{
fun("The world is big");
return 0;
}
是可以通过编译的,并且可以运行。但int fun(void);有些编译器是不可以的,有些会给一个warning。
main函数也可以调用
int main()
{
printf("Hello,world");
main();
return 0;
}
比较一下
int main(void)
{
printf("Hello,world");
main();
return 0;
}
请运行
int fun()
{
printf("Hello,world\n");
return 0;
}
int main()
{
fun("The world is big");
return 0;
}
是可以通过编译的,并且可以运行。但int fun(void);有些编译器是不可以的,有些会给一个warning。
main函数也可以调用
int main()
{
printf("Hello,world");
main();
return 0;
}
比较一下
int main(void)
{
printf("Hello,world");
main();
return 0;
}
请运行
#8
另外说下标准的main原形是
int main(int argc, char *argv[]);
其他的都是编译自行扩展支持而已。
int main(int argc, char *argv[]);
其他的都是编译自行扩展支持而已。
#9
多谢楼上的啊
真的长知识了
谢谢
真的长知识了
谢谢
#10
一楼后半部分说得对..>
#11
事实上,前面的区别还是很大的。
在支持K&R风格的编译器上,为了与K&R兼容,编译器在遇到空参数列表的函数时,假设这是旧式风格的函数,因而不检查参数
(旧式的函数无所谓函数原型,一般只要声明就行,所以即使有原型,也是 function();
而函数的实现如下)
注意参数列表的位置。
而标准化后的C语言,必须要求函数有原型,比如main函数作为C程序的入口函数,原型为:
而当我们写成:
int main()
时,编译器由于要兼容K&R,变认为这是旧式的函数从而不会报错;
main()或者main(void)时,便是由于大多数编译器将函数默认为返回int型(注意,ANSI没有要求编译器必须这么做!!),
从而引发默认行为(注意前者还有K&R原因);此时,您的main函数仍需要有返回值;比如cl(VC的编译器)
还有人会把main写成:
void main(void),或者void main()
在低警告级别时,这可能会通过编译,但是警告级别接近ANSI标准时,这就是一个警告,编译器会说这不是标准main函数,比如说main需要int型返回值。
在支持K&R风格的编译器上,为了与K&R兼容,编译器在遇到空参数列表的函数时,假设这是旧式风格的函数,因而不检查参数
(旧式的函数无所谓函数原型,一般只要声明就行,所以即使有原型,也是 function();
而函数的实现如下)
int function()
int arg1, char * arg2;
{
/* Do something about the arguments */
return value;
}
注意参数列表的位置。
而标准化后的C语言,必须要求函数有原型,比如main函数作为C程序的入口函数,原型为:
int main(void); /* Someone like to write it like that, but it was not the real main, and we'd better DO NOT use main like that */
/* But this is one of the main function, much better than int main() and just main() */
int main(int argc, char * argv[]); /* For normal using, tiny one */
int main(int argc, char * argv[], char * envp[]); /* The real main, full version */
而当我们写成:
int main()
时,编译器由于要兼容K&R,变认为这是旧式的函数从而不会报错;
main()或者main(void)时,便是由于大多数编译器将函数默认为返回int型(注意,ANSI没有要求编译器必须这么做!!),
从而引发默认行为(注意前者还有K&R原因);此时,您的main函数仍需要有返回值;比如cl(VC的编译器)
还有人会把main写成:
void main(void),或者void main()
在低警告级别时,这可能会通过编译,但是警告级别接近ANSI标准时,这就是一个警告,编译器会说这不是标准main函数,比如说main需要int型返回值。