簡體   English   中英

為什么for()循環語句后的花括號會使我的代碼表現不同?

[英]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;
}

緊隨單個語句的任何條件或循環構造( ifelseforwhiledo )將僅執行該語句,如果其后跟一個作用域塊( {} ),則將執行該作用域塊中的所有語句。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM