c - 为什么 OR 语句即使两者都为真,也只评估其中之一?

标签 c conditional-statements boolean-logic

考虑下面的 C 代码,根据我所了解到的,OR 语句应该评估 printf.但在实际输出中我只看到“XX”。为什么会发生这种情况?

#include<stdio.h>
int main() {
    int a;
    a = (printf("XX")||printf("YY"));
    printf("%d\n",a);
    a = (printf("XX")&&printf("YY"));
    printf("%d\n",a);
}

输出 -

XX1 XXYY1

最佳答案

即使一个条件为真,OR 运算符输出也为真。在这种情况下,第一个 printf 语句返回 true。因此不需要计算 OR 运算符的第二个操作数。

关于c - 为什么 OR 语句即使两者都为真,也只评估其中之一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57941404/

相关文章:

c++ - 有没有办法在 C/C++ 中撤消 SQLite3 步骤调用?

应用层协议(protocol)设计中对 recvfrom() 的困惑

c - 从函数实现返回结构

mysql - MySQL 中的逻辑或

python - 为什么 bool 表达式 "1 in (1, 2, 3) == True"为 False?

c++ - 从内存中的某个位置加载 DLL

python - 根据当前数组中每个项目的第一个元素创建新数组

MYSQL WHERE 条件取决于 SELECT 列

java - 如何在 JAVA 方法中合并 boolean 值

java - 简化 if 条件 boolean 表达式