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

One integer not equal to another integer?

#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。

scanf_s,如scanf,returns 是成功解析的值的数量。 scanf_s("%d", &min) 将 return 0、1 或 EOF(用于错误和文件结尾)。因此,比较

(scanf_s("%d", &min)) != (scanf_s("%d", &max))

仅当只能读取 minmax 之一时才为真,并且它们所取的值不会影响结果。此外,未定义读取值的顺序,因为未指定计算 != 的操作数的顺序。

您可能打算使用类似

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

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