簡體   English   中英

scanf不要求輸入

[英]scanf does not ask for input

編譯需要很多時間,並且會顯示一些隨機數,顯然scanf()並不需要輸入

#include <stdio.h>

int main() {

    int a;
    //a =  1472464;
    scanf ("%d", &a);
        if ((a % 6) && (a %4) == 0)
        {
            printf("Input %d is divisible by 6 and 4\n", a);
        }
        else {
            printf(" Input %d is not divisible by 6 and 4\n", a);
        }
    printf("Hello, World!\n");
    return 0;
}

這行是錯誤的:

    if ((a % 6) && (a %4) == 0)

它應該是:

    if ((a % 6) == 0 && (a %4) == 0)

我看不到代碼有任何其他明顯的問題。

表達式(a % 6) && (a %4) == 0不會將兩個模運算與零進行比較。 取而代之的是(a % 6) ,它將得出05之間的數字,並將其用作布爾值,然后將其用於(a %4) == 0

相反,您需要分別進行每個比較: (a % 6) == 0 && (a % 4) == 0


這里要了解的重要一點是,在C中,只有零和空指針被視為“假”。 任何不為零的值(或空指針)都是正確的。

這意味着,例如,如果a4a % 6將為“ true”,因為a % 64 (不為零)。 相反,當a例如為6 a % 6將為0 ,即“ false”。

因此,僅a % 6實際上會得到與您想要的結果相反的結果,當a 不能6整除時,它將為“ true”。

暫無
暫無

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

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