-1

为什么下面的代码不返回...100 90 80 70 60 50 40 30 20 之类的系列,并返回数字 10?

using namespace std;
int main()
{
 int cont;
 for(cont=100; cont>=20; cont-=10);
 {
   cout<< " "<<cont;
 }
 cout<< "\n";
 system("pause");
}

对不起我的愚蠢问题..我现在开始学习 C++

谢谢

4

4 回答 4

6
for(cont=100; cont>=20; cont-=10);
                                 ↑

删除这个;

您的代码与以下内容相同:

for(cont=100; cont>=20; cont-=10) { }
{
   cout<< " "<<cont;
}

循环将继续从不满足count之前减去 10,然后它会打印 的值,即 10。count>=20cont

提示:使用调试器,它是你最好的朋友。

于 2013-11-02T18:55:11.817 回答
4

已经指出了您的错误(循环;之后的一个迷路for ();),但是根本原因更加微妙:

变量应该在尽可能严格的范围内声明。

如果我们遵守这个准则,我们会得到:

int main()
{
    for(int cont=100; cont>=20; cont-=10);
    {
        std::cout << " " << cont; // COMPILER ERROR: unknown "cont"
    }
    std::cout<< "\n";
}

并且编译时错误总是比运行时错误更便宜。

于 2013-11-02T19:30:23.353 回答
3

右括号后面的分号不属于那里;它被解释为循环的整个主体。

于 2013-11-02T18:56:02.780 回答
1

因为闭合括号后的分号。它后面的分号表示循环没有主体,因为分号是任何语句的结尾。

于 2013-11-09T05:41:09.587 回答