逻辑运算符及其优先级,C语言逻辑运算符及其优先级详解
发布时间:2020-12-15 17:34:02 所属栏目:百科 来源:网络整理
导读:C 语言提供了以下三种逻辑运算符。 ?一元:!(逻辑非)。 ?二元:(逻辑与)、||(逻辑或)。 以上三种逻辑运算符中,逻辑非 ! 的优先级最高,逻辑与 次之,逻辑或? ||? 优先级最低。即算术、逻辑、赋值运算符的优先级顺序为: 逻辑非 ! 算术 逻辑与 、逻辑
C 语言提供了以下三种逻辑运算符。
以上三种逻辑运算符中,逻辑非 ! 的优先级最高,逻辑与 && 次之,逻辑或? ||? 优先级最低。即算术、逻辑、赋值运算符的优先级顺序为: 逻辑非 ! >算术 > 逻辑与 &&、逻辑或 || > 赋值= 逻辑表达式的值为逻辑值,即布尔型(bool),该类型为 C99 新增的,一些编译器可能还不支持该类型。逻辑值分为逻辑真值和逻辑假值。一般情况下,在判断时,仅有零值被判断为逻辑假值(false),一切非零值均可被判断为逻辑真值(true);在存储和表示时,通常,使用 1 表示逻辑真值,0表示逻辑假值。 逻辑与 && 运算符的运算规则:只有两个操作数均为逻辑真时,结果才为真。其余情况,结果均为假。 逻辑或 || 运算符的运算规则:只有两个操作数均为逻辑假时,结果才为假。其余情况,结果均为真。 例如,设有定义语句 int a=3,b=5;则有:
逻辑与 &&、逻辑或 || 均有“短路”特性:
例如: int a=1,b=2,c; c=a||++b; printf("a=%d,b=%d,c=%dn",a,b,c);由于 a 为非零值,即为真,而当逻辑或 || 的左操作数为真时,就足以判断该逻辑操作的结果为真。故发生“短路”,即右操作数 ++b 不被执行。输出结果为:a=1,c=1。 分析以下程序,输出其运行结果。 #include<stdio.h> int main(void) { int a=0,c; c=!a||++b&&a--; printf("a=%d,c); return 0; }代码分析: 混合表达式 c=!a||++b&&a-- 中含有的运算符有逻辑非 !、逻辑或 ||、逻辑与 &&、算术前缀 ++、算术后缀 --、赋值号 = 等6个运算符。逻辑运算符、算术运算符、赋值运算符的优先级的关系为: 逻辑非! > 算术 > 逻辑与&&、逻辑或 || > 赋值 = 由于该表达式中赋值运算符优先级最低,故最后赋值。根据优先级的高低,表达式 !a||++b&&a-- 等价于 (!a)||((++b)&&(a--)),而逻辑或 || 的左操作数 !a 为真,此时足以判断该表达式的值为真。故发生“短路”,即 || 的整个右操作数 ((++b)&&(a--)) 不再被执行。 运行结果为: a=0,c=1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |