2017-03-16 23 views
-1

我的教科书中提到:主函数的可执行部分至少要有一条语句。声明:“主函数中的可执行部分中必须至少有一条语句。”

1)

#include <stdio.h> 
void main(){ int c; } 

2)

#include <stdio.h> 
void main(){ int c; c=0; } 

上述两个码导致运行错误。

3)

#include <stdio.h> 
void main(){ 
int c; c=5; printf("%d",c); } 

上面的代码运行正常。可能的原因是什么?

+1

_上述两个代码导致运行时错误_... O.O最好的事情:摆脱你的书。而且'void main()'--->'int main(void)' – LPs

+2

'int c;'不是一个语句。这是一个定义。但是,'void main()'是托管环境中的无效签名。并遵循@LP的建议:摆脱那本书,它告诉废话。 – Olaf

+1

你得到什么运行时错误? –

回答

3

首先,

       称为在程序启动的功能被命名为 main。该实现声明不具有此功能的原型 。它应具有的 int返回类型并没有 参数来定义:

int main(void) { /* ... */ }
或两个参数(这里称为 argcargv,虽然任何名称可能是 使用,因为他们是本地的功能它们被声明):

int main(int argc, char *argv[]) { /* ... */ }

或等同物; 10)或以某种其他实施方式定义的方式。

C 2011 Online Draft,§ 5.1.2.2.1程序启动

除非你的编译器的文档中明确列出它作为一个有效的签名,使用void main()导致未定义行为,这可能是在您的运行时错误来自(哪里。其次,目前的C标准并不要求main包含任何可执行语句。

相关问题