让我们一步分析代码一步...
int main(int factorial,int n)
功能main
有两个参数:int
型factorial
,和int
型n
,并返回int
类型的对象。 错误:main
是一种特殊功能,其唯一有效签名为int main()
和int main(int, char**)
或之后的任何兼容类型,例如int main(int, const char *const[])
。
{
开始功能main
。
n = 1;
分配值1
到int
类型的可变n
。
printf("Enter a number to find it's factorial: ");
呼叫功能printf
与const char*
类型的参数"Enter a number to find it's factorial: "
。变长参数列表是空的。函数的返回值(类型为int
)被丢弃。
scanf("%d", &factorial);
呼叫功能scanf
与const char*
类型的参数"%d"
。可变长度参数列表包含一个参数:&factorial
,类型为int*
。函数的返回值(类型为int
)被丢弃。
while(factorial != 0) {
虽然factorial
不等于0
,做。
n *= factorial;
分配n
通过factorial
乘以n
的结果。
factorial--;
factorial
递减中表达后,并丢弃(的int
型)表达式的值。
}
在块结束时结束。
//printf("%d",n);
评论栏。对程序没有影响。
return ("%d",n); //Here
表达("%d", n)
使用逗号操作者来评估"%d"
表达,那么表达n
和评估后者,有效地忽略了前者。因此,这相当于return n;
。
return n; //neither works
由于此前的返回语句已经运行,这是永远不会执行的死代码。无论如何,这相当于以前的退货声明。
}
结束功能main
。
现在,除了错误的main
签名以及最后的死代码之外,你是完全正确的。是的,如果main
的返回值为零,则说该程序已成功执行。否则,它执行失败,返回值的目的是提供有关错误的(广泛的)信息。
我希望这引发了你的光芒!
看在这里:http://stackoverflow.com/questions/204476/what-should-main-return-in-c-and-c – HDJEMAI
它没有我的答案。 – Ahmad
你最后的假设是非常接近的:它告诉环境程序是否完成(通常返回0)或有错误(返回非0值)。否则,main()应该返回到哪里? – Evert