C语言学习笔记(4)逻辑运算

系列文章目录

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||ba和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语言之后的学习打下基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值