推荐答案
C 语言中的逻辑运算符主要有以下三种:
- 逻辑与(&&):当且仅当两个操作数都为真时,结果为真。
- 逻辑或(||):当至少有一个操作数为真时,结果为真。
- 逻辑非(!):对操作数的逻辑状态取反,即真变假,假变真。
本题详细解读
逻辑与(&&)
逻辑与运算符 &&
用于连接两个布尔表达式。只有当两个表达式都为真时,整个表达式的结果才为真。如果第一个表达式为假,则不会计算第二个表达式,因为无论第二个表达式的结果如何,整个表达式的结果都已经确定为假。
int a = 5; int b = 10; if (a > 0 && b > 0) { printf("Both a and b are positive.\n"); }
逻辑或(||)
逻辑或运算符 ||
用于连接两个布尔表达式。只要有一个表达式为真,整个表达式的结果就为真。如果第一个表达式为真,则不会计算第二个表达式,因为无论第二个表达式的结果如何,整个表达式的结果都已经确定为真。
int a = 5; int b = -10; if (a > 0 || b > 0) { printf("At least one of a or b is positive.\n"); }
逻辑非(!)
逻辑非运算符 !
用于对一个布尔表达式取反。如果表达式为真,则结果为假;如果表达式为假,则结果为真。
int a = 0; if (!a) { printf("a is zero.\n"); }
短路求值
逻辑与和逻辑或运算符都支持短路求值(short-circuit evaluation)。这意味着如果第一个操作数已经能够确定整个表达式的结果,则不会计算第二个操作数。这在某些情况下可以提高程序的效率,并避免不必要的计算或潜在的错误。
int a = 0; int b = 10; if (a != 0 && b / a > 2) { printf("This will not be executed.\n"); }
在上面的例子中,由于 a
为 0,a != 0
为假,因此 b / a
不会被计算,避免了除以零的错误。