C 语言提供了以下三种逻辑运算符
- 一元:!(逻辑非)。
以上三种逻辑运算符中逻辑非 ! 的运算符优先级高低最高,逻辑与 && 次之逻辑或 || 运算符优先级高低最低。即算术、逻辑、赋值运算符的运算符优先级高低顺序为:
逻辑表达式的值为逻辑值即布尔型(bool),该类型为 C99 新增的一些编译器可能还不支持該类型。
逻辑值分为逻辑真值和逻辑假值一般情况下,在判断时仅有零值被判断为逻辑假值(false),一切非零值均可被判断为逻辑真值(true);在存储和表示时通常,使用 1 表示逻辑真值0表示逻辑假值。
逻辑与 && 运算符的运算规则:只有两个操作数均为逻辑真时结果才为嫃。其余情况结果均为假。
逻辑或 || 运算符的运算规则:只有两个操作数均为逻辑假时结果才为假。其余情况结果均为真。
- !a:由于 a 非零为真,!a 为假其值为 0。
- a||b:由于 a 和 b 均非零均为真,故逻辑或的结果为真其值为 1。
- a&&b:由于 a 和 b 均非零均为真,故逻辑与的结果为真其值为 1。
- 逻辑与&&“短路”:当逻辑与&&的左操作数为逻辑假时就足以判断该逻辑运算的结果为假了,故右操作数就不再被执行
- 逻辑或||“短路”:当逻辑或||的左操作数为逻辑真时,就足以判断该逻辑运算的结果为真了故右操作数就不再被执行。
由于 a 为非零值即为真,而當逻辑或 || 的左操作数为真时就足以判断该逻辑操作的结果为真。故发生“短路”即右操作数 ++b 不被执行。输出结果为:a=1,b=2,c=1
分析以下程序,输出其运行结果
混合表达式 c=!a||++b&&a-- 中含有的运算符有逻辑非 !、逻辑或 ||、逻辑与 &&、算术前缀 ++、算术后缀 --、赋值号 = 等6个运算符。逻辑运算符、算术运算符、赋值运算符的运算符优先级高低的关系为:
由于该表达式中赋值运算符运算符优先级高低最低故最后赋值。