簡體   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