为什么在 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 在评论部分所说的那样,在这种情况下,这两个语句都将在循环的每次迭代中执行,因此 比较 慢比第一个。但这仍然不会对总执行时间产生太大影响。