[英]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
一樣, scanf_s
返回已成功解析的值的數量。 scanf_s("%d", &min)
將返回0、1或EOF
(用於錯誤和文件結尾)。 這樣,比較
(scanf_s("%d", &min)) != (scanf_s("%d", &max))
僅當只能讀取min
和max
之一並且它們所取的值不計入結果時,才會為true。 此外,由於未指定計算!=
操作數的順序,因此未按什么順序讀取值。
您可能打算使用類似
while(scanf_s(" %d %d", &min, &max) == 2 && min != max)
如果scanf_s
報告它能夠解析兩個值,則scanf_s(" %d %d", &min, &max) == 2
將成立(您可以通過對scanf_s
兩次調用來做到這scanf_s
,但我認為沒有理由這樣做) ),並且我相信min != max
是不言自明的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.