为什么在 C 中查找阶乘时 FOR 循环后没有大括号
Why the absence of curly brackets after FOR loop in finding factorials in C
这是查找给定非负整数的阶乘的代码之一。当我在此代码的 FOR 循环后使用大括号时,程序运行非常缓慢。我知道 for 循环可以在没有大括号的情况下用于单行代码,但我的代码由 for 循环中的两行组成。谁能解释一下这是什么原因?
#include <stdio.h>
void main()
{
int input,i,fact=1;
//read user input//
printf("Enter the number :");
scanf("%d",&input);
for(i=1;i<=input;i++)
fact=fact*i;
printf("value of factorial %d is %d",input,fact);
}
我已经使用 rextester c 编译器分析了你程序的 运行 时间,我可以看到,
没有大括号 运行宁时间:0.18 秒 和
使用大括号 运行ning 时间:0.16 秒,可能会不时变化大约 +/- 0.05 秒。如果你在循环中使用或不使用大括号作为单行代码,我想这不应该影响程序的 运行 时间。
您可以使用其他一些编译器并尝试 运行ning 您的代码。
你说的完全正确
for loops can be used without curly brackets for single line of code
更准确地说,如果没有提供任何大括号
,for loop
将运行仅一个行代码
所以你的代码
for(i=1;i<=input;i++)
fact=fact*i;
printf("value of factorial %d is %d",input,fact);
将与
相同
for(i=1;i<=input;i++)
{
fact=fact*i;
}
printf("value of factorial %d is %d",input,fact);
但是这里你在 fact=fact*i;
和 printf("value of factorial %d is %d",input,fact);
两边都加上了大括号 ( {}
)
所以就像 @Some programmer dude 在评论部分所说的那样,在这种情况下,这两个语句都将在循环的每次迭代中执行,因此 比较 慢比第一个。但这仍然不会对总执行时间产生太大影响。
这是查找给定非负整数的阶乘的代码之一。当我在此代码的 FOR 循环后使用大括号时,程序运行非常缓慢。我知道 for 循环可以在没有大括号的情况下用于单行代码,但我的代码由 for 循环中的两行组成。谁能解释一下这是什么原因?
#include <stdio.h>
void main()
{
int input,i,fact=1;
//read user input//
printf("Enter the number :");
scanf("%d",&input);
for(i=1;i<=input;i++)
fact=fact*i;
printf("value of factorial %d is %d",input,fact);
}
我已经使用 rextester c 编译器分析了你程序的 运行 时间,我可以看到,
没有大括号 运行宁时间:0.18 秒 和 使用大括号 运行ning 时间:0.16 秒,可能会不时变化大约 +/- 0.05 秒。如果你在循环中使用或不使用大括号作为单行代码,我想这不应该影响程序的 运行 时间。
您可以使用其他一些编译器并尝试 运行ning 您的代码。
你说的完全正确
for loops can be used without curly brackets for single line of code
更准确地说,如果没有提供任何大括号
,for loop
将运行仅一个行代码
所以你的代码
for(i=1;i<=input;i++)
fact=fact*i;
printf("value of factorial %d is %d",input,fact);
将与
相同for(i=1;i<=input;i++)
{
fact=fact*i;
}
printf("value of factorial %d is %d",input,fact);
但是这里你在 fact=fact*i;
和 printf("value of factorial %d is %d",input,fact);
{}
)
所以就像 @Some programmer dude 在评论部分所说的那样,在这种情况下,这两个语句都将在循环的每次迭代中执行,因此 比较 慢比第一个。但这仍然不会对总执行时间产生太大影响。