[英]Why does this while loop code not work even though the entered value makes the condition false?
#include <stdio.h>
int main(int argc, char *argv[]) {
double morningR;
printf("Morning rating (0.0-5.0): "); // Ask morning first
morningR = scanf("%lf", &morningR);
while (morningR < 0.0 || morningR > 5.0) {
printf(" Morning rating (0.0-5.0): "); // Ask morning again
morningR = scanf("%lf", &morningR);
}
如果我輸入 6.5 或 -0.9,while 循環應該再次詢問問題,但事實並非如此。
scanf
返回接收 arguments 成功分配的數量或 EOF 所以morningR = scanf(...)
是錯誤的。 在您的情況下mornigR
將被分配1
,因為scanf
成功讀取了 1 個值並且您的while
從未輸入。
通過調試很容易發現這種錯誤。 如果您已經調試過您的代碼,您會立即看到morningR
沒有您期望的值。
我相信這現在會起作用
#include <stdio.h>
int main(int argc, char *argv[]) {
double morningR;
printf("Morning rating (0.0-5.0): "); // Ask morning first
scanf("%lf", &morningR);
while (morningR < 0.0 || morningR > 5.0) {
printf(" Morning rating (0.0-5.0): "); // Ask morning again
morningR = scanf("%lf", &morningR);
}
編寫Clrscr();
和getch();
嘗試使用int
寫 0 和 5 而不是 0.0 和 5.0。
不要寫morningR = scanf("%lf", &morningR);
只寫
scanf("%d", &morningR);
( %d
代表int
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.