[英]Why are braces after a for() loop statement making my code behave different?
#include<iostream>
int main()
{
int n,t,i;
cout<<"input a number"<<endl;
cin>>n;
for(i=1;i<=10;++i)
t=n*i;
cout<<t<<endl;
return 0;
}
在這里,如果我在控制台屏幕上輸入10,那么我得到的輸出僅為100,而當我輸入以下內容時,我在控制台上得到了整個表10。 我不明白是什么原因阻止了我上面的代碼顯示下面的輸出。 是return
嗎?
#include<iostream>
int main()
{
int n,t,i;
cout<<"input a number"<<endl;
cin>>n;
for(i=1;i<=10;++i)
{
t=n*i;
cout<<t<<endl;
}
return 0;
}
在這之前,我得到整張桌子直到10點。為什么?
如果您正確縮進代碼,則可以看到第一個for循環僅執行一個語句:
#include<iostream>
int main()
{
int n,t,i;
cout<<"input a number"<<endl;
cin>>n;
for(i=1;i<=10;++i)
t=n*i; // Executed within for loop
cout<<t<<endl;
return 0;
}
而
#include<iostream>
int main()
{
int n,t,i;
cout<<"input a number"<<endl;
cin>>n;
for(i=1;i<=10;++i)
{ // Every statement within the scope block is executed in the for loop
t=n*i;
cout<<t<<endl;
}
return 0;
}
緊隨單個語句的任何條件或循環構造( if
, else
, for
, while
, do
)將僅執行該語句,如果其后跟一個作用域塊( {}
),則將執行該作用域塊中的所有語句。
for(i=1;i<=10;++i)
t=n*i;
cout<<t<<endl;
等效於:
for(i=1;i<=10;++i) {
t=n*i;
}
cout<<t<<endl;
因此,第一個代碼段計算t = n * i
10次,但由於cout<<t<<endl;
因此僅打印t
最后評估值cout<<t<<endl;
放在循環之外。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.