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)

I don't see any other obvious problem with the code.

表达式 (a % 6) && (a %4) == 0 不会将两个模运算与零进行比较。相反,它执行 (a % 6),这将导致 05 之间的数字,并将其用作布尔值,然后将其与 (a %4) == 0.[= 的结果一起使用28=]

相反,您需要分别进行每个比较:(a % 6) == 0 && (a % 4) == 0


这里要知道的重要一点是,在 C 中只考虑零和空指针 "false"。任何不为零(或空指针)的东西都是真的。

这意味着如果 a 例如 4 那么 a % 6 将是 "true" 因为 a % 64 而不是零。相反,当 a 例如 6 那么 a % 6 将是 0 即 "false".

所以仅使用 a % 6 实际上会给出与您想要的相反的结果,当 a 不是 时 "true" 不是 可被 6.

整除