系列文章目录
C语言学习笔记(1)常量和变量
C语言学习笔记(2)条件判断 if语句
C语言学习笔记(3)循环
前言
条件语句和循环语句中需要经常用到逻辑判断来简化程序,本文先介绍逻辑类型,然后介绍逻辑运算,最后补充介绍条件运算和逗号运算符。本文有代码简单示例,有讲解,读完之后可以在评论区留言你的观点。
一、逻辑类型:bool 类型
布尔类型是一种数据类型,只有 true(真)和 false (假)两种类型。
使用步骤
代码如下(示例):
#include<stdbool.h>
之后就可以使用 true 和false 以及 bool。实际上并没有真正的布尔类型,它们实质上还是整数。
#include<stdio.h>
#include<stdbool.h>
int main()
{
bool a = 6>5;
bool t = true;
t = 2; // 布尔类型实质上就是整数,因此,被赋值为整数也不会报错。
printf("t: %d\n",t); // printf中没有特殊符号来输出布尔类型。
printf("a: %d\n",a) ;
return 0;
}
二、逻辑运算
- 逻辑运算是对逻辑量进行的运算,结果只有0和1。
- 逻辑量是关系运算或者逻辑运算的结果。
逻辑运算符
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
! | 逻辑非 | !a | 如果a是true,结果为false;如果a是false,结果为true |
&& | 逻辑与 | a&&b | 如果a和b都是true,结果为true;否则为false |
|| | 逻辑或 | a||b | a和b中两个都是false,结果为false;否则结果为true |
- 优先级 : ! > && > ||
代码如下
示例1:
/*表达区间 [4,6]*/
//正确
x > 4 && x < 6
//错误
4 < x < 6
错误原因: 因为 4<x得到的是布尔值0或者1;无论是0还是1都小于6,所以4<x<6的结果一定是1。
示例2:
/* 判断一个字符c 是否是大写字母*/
c >= 'A' && c <= 'Z'
如果c处在A和Z之间,就是大写字母
短路
逻辑运算是自左向右进行的。如果左边的结果已经可以决定结果了,就不会做右边的计算。
警告: 不要把赋值,包括复合赋值组合进表达式中,以防止短路的发生。
示例:
int a=-1;
if (a > 0 && a++ >-1)
{
printf("OK!\n");
}
printf("a:%d",a);
最后输出的 a 的值还是 -1 , 并没有进行 a++ 这一步操作。
三、条件运算符
语法格式:
表达式1 ? 表达式2 : 表达式3表达式1进行判断,条件满足时执行表达式2,条件不满足时执行表达式3。
条件运算符的优先级比赋值运算符高;但是低于其他运算符。
逗号运算符
逗号在C语言中是一个运算符,用来连接两个表达式,并且以右边表达式的值作为结果。
格式:
表达式1 , 表达式2
逗号的优先级是所有运算符中最低的,所以,表达式1和表达式2会先计算;逗号的组合关系是自左向右的,所以,表达式1会先计算,表达式2的值留作逗号运算的结果。
示例:
int i;
i = 3+4 , 5+6; // i=3+4是表达式1,赋值的优先级更高。因此i的值是7,5+6没有用到
printf("%d",i);
// 第二种
i = ( 3 + 4 , 5 + 6 ); // i的值是11, 3+4没有用到
使用案例
逗号表达式主要在 for 中使用。目前逗号表达式的唯一用处
for(i=0,j=10;i<10; i++ ,j--)
总结
以上就是本文的内容,本文重点介绍了逻辑运算符相关的知识,大家特别要注意对于运算符需要关注优先级,读完本文之后,对于C语言之后的学习打下基础。