c.语言中的逻辑运算

一个数既是5的倍数,又是7的倍数。
应该是用
x%5==0&&x%7==0,
但有个问题就是前面 x%5==0,结果为0,不就是‘假’吗,后面的x%7==0还会运算吗?。我迷了

x%5==0 且 x%7==0
这里的x%5==0表示逻辑判断,当x%5等于0的时候整个表达式的值就是真,否则为假;你误解为表达式的值就是右边这个0,其实不然,而是整个表达式最终的值才是逻辑值;同样x%7==0则一样判断。

表达式1 && 表达式2
只有表达式1为真时,才会继续判断表达式2,否则不再判断表达式2。

不要混淆相等与赋值运算符
比如
if(x=0)这个表达式的最终逻辑就是x,因为x为0,所以条件为假

以下内容部分参考ChatGPT模型:


是的,如果x%5==0的结果为0,即假,那么后面的x%7==0不会再运算了。这就是逻辑运算的短路特性,即如果前面的表达式已经能够确定整个式子的值,后面的表达式就不会再被计算了。

例如,如果我们有一个逻辑表达式a && b,如果a的值为假,那么整个式子的值就已经确定为假了,b就不会再被计算了。

下面是一个例子:

#include <stdio.h>

int main() {
    int x = 35;
    if (x % 5 == 0 && x % 7 == 0) {
        printf("%d是5和7的倍数\n", x);
    } else {
        printf("%d不是5和7的倍数\n", x);
    }
    return 0;
}

输出结果为:

35不是57的倍数

因为35不是既是5的倍数又是7的倍数。如果把x的值改成70,输出结果就会是:

7057的倍数

因为70既是5的倍数又是7的倍数。


如果我的建议对您有帮助、请点击采纳、祝您生活愉快

==0和结果为0你搞混了呀
1==0结果为0
0==0结果为1呀