[英]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.