2015-11-06 76 views
-2

我可以在主函数中返回一个变量吗?像返回变量的主要功能

#include <stdio.h> 
#include <stdlib.h> 

int main(int factorial,int n) 
{ 
    n=1; 
    printf("Enter a number to find it's factorial: "); 
    scanf("%d",&factorial); 
    while(factorial!=0){ 
     n*=factorial; 
     factorial--; 
    } 
    //printf("%d",n); 
    return ("%d",n); //Here 
    return n;   //neither works 
} 

它不返回变量ñ是否返回0;仅用于说明该程序运行正常吗?

+0

看在这里:http://stackoverflow.com/questions/204476/what-should-main-return-in-c-and-c – HDJEMAI

+0

它没有我的答案。 – Ahmad

+0

你最后的假设是非常接近的:它告诉环境程序是否完成(通常返回0)或有错误(返回非0值)。否则,main()应该返回到哪里? – Evert

回答

1

main的返回值应指示程序如何退出。正常退出通常由来自main的返回值0表示。异常终止通常以非零返回来表示,但对于如何解释非零代码没有标准。

Is the return 0; statement only for telling that the program worked fine?

是,主函数的返回值只显示程序是如何退出,与你与像非主函数的返回值,这样做值没有其他用途返回用于其他用途的值。

返回的值由运行程序的环境(如DOS或其他操作系统)解释它的内部任务。该程序不能使用该值。

2

让我们一步分析代码一步...

int main(int factorial,int n) 

功能main有两个参数:intfactorial,和intn,并返回int类型的对象。 错误:main是一种特殊功能,其唯一有效签名为int main()int main(int, char**)或之后的任何兼容类型,例如int main(int, const char *const[])

{ 

开始功能main

n = 1; 

分配值1int类型的可变n

printf("Enter a number to find it's factorial: "); 

呼叫功能printfconst char*类型的参数"Enter a number to find it's factorial: "。变长参数列表是空的。函数的返回值(类型为int)被丢弃。

scanf("%d", &factorial); 

呼叫功能scanfconst 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的返回值为零,则说该程序已成功执行。否则,它执行失败,返回值的目的是提供有关错误的(广泛的)信息。

我希望这引发了你的光芒!