为什么在for()循环语句之后使用大括号使我的代码表现不同?

时间:2016-03-22 17:47:31

标签: c++

#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.为什么?

2 个答案:

答案 0 :(得分:6)

如果正确缩进代码,可以看到第一个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)后跟单个语句只会执行该语句,如果后跟一个范围块({}),则将执行范围块内的所有语句。

答案 1 :(得分:3)

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次,但由于t位于循环之外,因此仅打印cout<<t<<endl;的最后一次评估。