Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 返回主函数中的变量_C_Return - Fatal编程技术网

C 返回主函数中的变量

C 返回主函数中的变量,c,return,C,Return,我可以在主函数中返回一个变量吗?喜欢 #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;

我可以在主函数中返回一个变量吗?喜欢

#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
} 
#包括
#包括
int main(int阶乘,int n)
{
n=1;
printf(“输入一个数字以找到它的阶乘:”);
scanf(“%d”和阶乘);
while(阶乘!=0){
n*=阶乘;
阶乘--;
}
//printf(“%d”,n);
return(“%d”,n);//此处
返回n;//两者都不起作用
} 

它不返回变量n。是返回值0语句仅用于说明程序运行正常?

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

返回值为0;声明仅用于说明该程序有效 好吧

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


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

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

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;
int
类型的变量
n
赋值
1

    printf("Enter a number to find it's factorial: ");
    }
使用参数
调用函数
printf
“输入一个数字以查找其阶乘:
类型为
const char*
”。可变长度参数列表为空。函数的返回值(类型为
int
)将被丢弃

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

    scanf("%d", &factorial);
    while(factorial != 0) {
虽然
factorial
不等于
0
,但请执行

        n *= factorial;
分配
n
n
乘以
factorial
的结果

        factorial--;
在表达式后减量
factorial
,并丢弃表达式的值(类型
int

在阻塞时结束

    //printf("%d",n);
注释行。对程序没有影响

    return ("%d",n);   //Here
表达式
(“%d”,n)
使用逗号运算符计算
“%d”
表达式,然后计算
n
表达式,然后计算后者,实际上忽略前者。因此,这相当于
返回n

    return n;          //neither works
由于之前的return语句已经在此时运行,因此这是永远不会执行的死代码。无论如何,它相当于前面的return语句

}
结束功能
main

    n = 1;
现在,除了错误的
main
签名和结尾的死代码之外,您完全正确。是的,如果
main
的返回值为零,则表示程序已成功执行。否则,它将执行失败,返回值的目的是提供(广泛的)错误信息


我希望这对你有启发

看这里:它没有我的答案。你的最后一个假设非常接近:它告诉环境程序是完成正常(通常返回0)还是有错误(返回非0值)。否则,main()应该返回到哪里?链接的问题怎么没有你的答案?接受的答案以“main的返回值应指示程序如何退出”开头。这正是你想要的答案。如果你想告诉环境你的计算结果(这似乎是你要问的),只需打印数值。