我可以在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; 语句只是为了告诉程序运行正常吗?
答案 0 :(得分:2)
让我们一步一步地分析您的代码......
int main(int factorial,int n)
函数main
有两个参数:类型factorial
的{{1}}和int
类型的n
,并返回{{1}类型的对象}。 错误: int
是一个特殊功能,其唯一有效的签名是int
和main
,或此后的任何兼容类型,例如{{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或其他操作系统)解释,程序正在为其内部任务运行。该程序无法使用该值。