簡體   English   中英

為什么即使輸入的值使條件為假,這個while循環代碼也不起作用?

[英]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); 
  }
  1. 編寫Clrscr(); getch();

  2. 嘗試使用int

  3. 寫 0 和 5 而不是 0.0 和 5.0。

  4. 不要寫morningR = scanf("%lf", &morningR); 只寫

    scanf("%d", &morningR);

( %d代表int )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM