主要功能中的返回变量

时间:2015-11-06 06:04:08

标签: c return

我可以在main函数中返回变量吗?喜欢在

#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
} 

它不会返回变量 n 返回0; 语句只是为了告诉程序运行正常吗?

2 个答案:

答案 0 :(得分:2)

让我们一步一步地分析您的代码......

int main(int factorial,int n)

函数main有两个参数:类型factorial的{​​{1}}和int类型的n,并返回{{1}类型的对象}。 错误: int是一个特殊功能,其唯一有效的签名是intmain,或此后的任何兼容类型,例如{{1} }

int main()

开始功能int main(int, char**)

int main(int, const char *const[])

将值{ 分配给main类型的变量 n = 1;

1

使用n类型的参数int调用函数 printf("Enter a number to find it's factorial: "); 。可变长度参数列表为空。函数的返回值(类型printf)将被丢弃。

"Enter a number to find it's factorial: "

使用const char*类型的参数int调用函数 scanf("%d", &factorial); 。变长参数列表包含一个参数:scanf,类型为"%d"。函数的返回值(类型const char*)将被丢弃。

&factorial

虽然int*不等于int,但请执行。

    while(factorial != 0) {

factorial乘以0的结果 n *= factorial; 。{/ p>

n

在表达式后递减n,并丢弃表达式的值(类型factorial)。

        factorial--;

结束时阻止。

factorial

评论行。对该计划没有影响。

int

表达式 } 使用逗号运算符来计算 //printf("%d",n); 表达式,然后计算 return ("%d",n); //Here 表达式,并对后者进行求值,从而有效地忽略前者。因此,这相当于("%d", n)

"%d"

由于此时已经运行了上一个return语句,因此这是永远不会执行的死代码。无论如何,它等同于之前的退货声明。

n

结束功能return n;

现在,除了错误的 return n; //neither works 签名以及最后的死代码这一明显例外,你完全正确。是的,如果} 的返回值为零,则说该程序已成功执行。否则,它执行失败,返回值的目的是提供有关错误的(广泛)信息。

我希望这能引起你的注意!

答案 1 :(得分:1)

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

  

回报是0;声明只是为了告诉该程序有效   细

是的,main函数的返回值仅显示如何退出程序,没有其他使用此值的方法与非主函数的返回值一样,例如返回其他用途的值。

返回的值由环境(如DOS或其他操作系统)解释,程序正在为其内部任务运行。该程序无法使用该值。