C ++出乎意料地退出循环

时间:2018-05-24 15:40:42

标签: c++

我正在使用Andrew Koenig的 Accelerated C ++ ,其中一个练习要求编写一个程序来输出两列,一个整数到一些 maxInt 和他们的另一个正方形。这是我的代码:

#include <iostream>
#include <iomanip>
#include <string>


using std::cout;
using std::endl;
using std::setw;
using std::to_string;
using std::string;


int square(const int n)
{
    return n*n;
}

int main()
{
    // loop until maxInt
    const int maxInt = 1000;

    // use the length of maxInt and its square to comptue width later on
    const int maxIntSize = to_string(maxInt).length();
    const int maxIntSquareSize = to_string(square(maxInt)).length();

    for (int i = 1; i != maxInt + 1; ++i) {

        const int j = square(i);

        // we need iSize to compute the width
        const int iSize = to_string(i).length();
        const int width = maxIntSize + maxIntSquareSize + 1 - iSize;

        cout << i << setw(width) << j << endl;
    }

    return 0;
}

我的问题是程序不一致。有时它会像我期望的那样工作,有时它会过早地停止打印。此外,当它没有按照我的预期行事时,行为是相当不可预测的。谁能让我知道我做错了什么?

(另外,我是C ++的新手,所以对任何一般建议表示赞赏。)

0 个答案:

没有答案