[英]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;
}
表達式(a % 6) && (a %4) == 0
不會將兩個模運算與零進行比較。 取而代之的是(a % 6)
,它將得出0
到5
之間的數字,並將其用作布爾值,然后將其用於(a %4) == 0
。
相反,您需要分別進行每個比較: (a % 6) == 0 && (a % 4) == 0
這里要了解的重要一點是,在C中,只有零和空指針被視為“假”。 任何不為零的值(或空指針)都是正確的。
這意味着,例如,如果a
為4
則a % 6
將為“ true”,因為a % 6
為4
(不為零)。 相反,當a
例如為6
a % 6
將為0
,即“ false”。
因此,僅a % 6
實際上會得到與您想要的結果相反的結果,當a
不能被6
整除時,它將為“ true”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.