繁体   English   中英

为什么在 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 秒,带大括号运行时间: 0.16 秒,可能会不时变化约 +/- 0.05 秒。 而且,如果您在循环中对单行代码使用或不使用大括号,我想这不会影响程序的运行时间。

您可以使用其他一些编译器并尝试运行您的代码。

你说的完全正确

for 循环可以在没有大括号的情况下用于单行代码

更确切地说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;周围放置了大括号( {}fact=fact*i; printf("value of factorial %d is %d",input,fact);

所以就像@Some程序员哥们在注释部分所述,在这种情况下这两个语句将在循环的每个迭代执行的,因此将是相对慢于第一个。 但这仍然不会对总执行时间产生太大影响。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM