C语言逻辑运算符
示例
逻辑与
如果两个操作数都不为零,则对两个操作数执行逻辑布尔“与”运算,并返回1。逻辑AND运算符的类型为int。
0 && 0 /* Returns 0. */ 0 && 1 /* Returns 0. */ 2 && 0 /* Returns 0. */ 2 && 3 /* Returns 1. */
逻辑或
如果两个操作数中的任何一个非零,则对两个操作数执行逻辑布尔或运算,并返回1。逻辑OR运算符的类型为int。
0 || 0 /* Returns 0. */ 0 || 1 /* Returns 1. */ 2 || 0 /* Returns 1. */ 2 || 3 /* Returns 1. */
逻辑非
执行逻辑否定。逻辑NOT运算符的类型为int。NOT运算符检查至少一位等于1,如果等于1,则返回0。否则返回1;否则返回0。
!1 /* Returns 0. */ !5 /* Returns 0. */ !0 /* Returns 1. */
短路评估
其实这两种常见的一些关键特性&&和||:
在完全评估右侧操作数(RHS)之前,先完全评估左侧操作数(LHS),
在左侧操作数和右侧操作数的求值之间有一个序列点,
最重要的是,如果左侧操作数的结果确定了总体结果,则根本不评估右侧操作数。
这意味着:
如果LHS评估为“真”(非零),||则不会评估的RHS(因为“真或任何”的结果为“真”),
如果LHS的评估结果为“假”(零),&&则不会评估的RHS(因为“假且所有”的结果为“假”)。
这很重要,因为它允许您编写如下代码:
const char *name_for_value(int value)
{
static const char *names[] = { "zero", "one", "two", "three", };
enum { NUM_NAMES = sizeof(names) / sizeof(names[0]) };
return (value >= 0 && value < NUM_NAMES) ? names[value] : "infinity";
}如果将负值传递给该函数,则该value>=0术语的计算结果为false,并且不对该value<NUM_NAMES术语进行评估。
热门推荐
10 五一公司放假祝福语简短
11 追星女孩的祝福语简短
12 给长辈端午祝福语 简短
13 生日祝福语有诗意简短
14 团圆日祝福语简短
15 中秋商务祝福语简短最新
16 温暖文艺简短祝福语短句
17 男孩上学祝福语简短的
18 入住酒店文案祝福语简短