一个整数不等于另一个整数?

时间:2015-01-31 16:58:08

标签: c while-loop

#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{
int min, max, sumOfSquares;
sumOfSquares = 0;
//scanf_s("%d %d", &min, &max);

while((scanf_s("%d", &min)) != (scanf_s("%d", &max)))
{
    for (int i = min; i <= max; i++)
    {
        sumOfSquares += (i*i);
    }
    printf("%d", sumOfSquares);
    printf("%d %d", min, max);

}

return 0;
}

所以基本上,我输入两个整数。一个是最小值,另一个是最大值。我得到最小值和最大值的平方和它们之间的每个数字的总和。 我不太确定哪里出错了。 当我输入两个数字时,根本没有打印出来,所以我猜测while语句有问题吗?

这不是一种可接受的格式吗? 有人可以告诉我出了什么问题,如果可能的话,请指出正确的方向。

另外,我使用while循环,因为它应该继续询问我输入并打印sumOfSquares,直到我输入一个彼此相等的输入,如5 5。

1 个答案:

答案 0 :(得分:4)

scanf_sscanf一样,返回已成功解析的值的数量。 scanf_s("%d", &min)将返回0,1或EOF(对于错误和文件结尾)。因此,比较

(scanf_s("%d", &min)) != (scanf_s("%d", &max))
如果只能读取minmax中的一个,那么

才会成立,并且它们所采用的值不会影响结果。此外,未定义读取值的顺序,因为未指定评估!=的操作数的顺序。

你可能想要使用像

这样的东西
while(scanf_s(" %d %d", &min, &max) == 2 && min != max)

如果scanf_s(" %d %d", &min, &max) == 2报告它能够解析两个值,那么scanf_s将成立(您可以通过两次调用scanf_s来执行此操作,但我认为没有理由这样做),我认为min != max是不言自明的。