【C】关系运算符和逻辑运算符
关系运算符和逻辑运算符
分支结构
我们把需要让程序进行判断和选择的设计称之为分支结构
关系运算符
-
C语言中,使用关系运算符来比较两个数的大小关系:
-
优先级相同(高):
- " < " (小于)
- "<=" (小于或等于)
- " > " (大于)
- ">=" (大于或等于)
-
优先级相同(低):
- " == " (等于)
- " != " (不等于)
-
-
关系运算符是双目运算符,它们的优先级比算术运算符小,比赋值运算符高。
-
关系运算符得到的值是一个逻辑值,即真或假。
-
C语言用数字1来表示真,用数字0表示假
关系表达式
-
用关系运算符将两边的变量、数据或表达式连接起来,称之为关系表达式:
-
1 < 2
-
a > b
-
a <= 1 + b
-
' a ' + ' b ' <= ' c '
-
( a = 3 ) > ( b = 5 )
-
-
关系表达式得到的值是一个逻辑值,它的表现形式为数字0(假)或数字1(真)
-
举个例子:
-
关系表达式 1 < 2 的值为真,因此该关系表达式的值为1
-
关系表达式 ' a ' + ' b ' <= ' c ',因为字符' a '、' b '、' c '对应的ASCII码分别是97、 98 、99,即 97 + 98 <= 99 ,因此该关系表达式的值为0
int main() { int a = 5, b = 3; printf("%d\n", 1 < 2); //真 printf("%d\n", a > b); //真 printf("%d\n", a <= b + 1 ); // 5 <= 3 + 1 假 printf("%d\n", 'a' + 'b' <= 'c'); //97 + 98 <= 99 假 printf("%d\n", ( a = 3 ) > ( b = 5 )); // 3 > 5 假 return 0; }运行结果
1 1 0 0 0
-
逻辑运算符
C语言里,如果需要同时对两个或两个以上的关系表达式进行判断,就需要逻辑运算符
-
C语言总共提供了三种逻辑运算符:
运算符 含义 优先级 举例 说明 ! 逻辑非 高 !a 如果 a 为真, !a 为假;
如果 a 为假, !a 为真& 逻辑与 中 a && b 只有 a 和 b 同时为真,结果才为真;
只要 a 和 b 其中一个为假, 结果为假|| 逻辑或 低 a || b 只要 a 或 b 其中一个为真,结果为真;
只有 a 和 b 同时为假, 结果才为假逻辑非:真变假,假变真
逻辑与:同真即真,有假为假
逻辑或:有真即真,同假为假
逻辑表达式
-
用逻辑运算符将两边的变量、 数据或表达式连接起来, 称之为逻辑表达式:
3 > 1 && 1 < 2
3 + 1 || 2 == 0
!( a + b )
!0 + 1 < 1 || !( 3 + 4 )
'a' - 'b' && 'c'
-
逻辑表达式用数字0表示假,任何非0的数字都可以表示真,!0=1
int main() { int a = 5, b = 3; printf("%d\n", 3 > 1 && 1 < 2); // 真&&真 =>真 printf("%d\n", 3 + 1 || 2 == 0); // 真||假 =>真 printf("%d\n", !( a + b ) ); // !(真) => 假 printf("%d\n", !0 + 1 < 1 || !( 3 + 4 )); //①!0+1 => 1+1;②!(3+4)=>!(真)=>假;③1+1<1 =>假;④假||假 =>假 printf("%d\n", 'a' - 'b' && 'c'); //①97-98=-1 =>真; ②99=>真; ③真&&真 =>真; return 0; }运行结果
1 1 0 0 1
短路求值
-
短路求值又称最小化求值,是一种逻辑运算符的求值策略。只有当第一个操作数的值无法确定逻辑运算的结果时,才对第二个操作数进行求值。
-
C语言对于逻辑与和逻辑或采用短路求值的方式。
int main() { int a = 3, b = 3; (a = 0) && (b = 5); //a=0为假,&&有假为假,整个表达式结果已经确定,则(b=5)不进行运算 printf("a = %d, b = %d\n",a, b); (a = 1) || (b = 5); //a=1为真,||有真为真,整个表达式结果已经确定,则(b=5)不进行运算 printf("a = %d, b = %d\n",a, b); return 0; }运行结果
a = 0, b = 3 a = 1, b = 3

浙公网安备 33010602011771号