C语言中的逻辑运算符有&&
、||
、及!
,他们分别被称为逻辑与
、逻辑或
、逻辑非
。前两者是二元运算符,逻辑非是一元运算符
。
1.逻辑与运算符 `&&`
- 逻辑与运算符的基本语法是:
表达式1 && 表达式2
- 其求值的结果规则是:
(1)当两个表达式均为非0时,求值结果为1
(2)其他情况(只要有至少一个表达式为0),求值结果为0
实例:判断一个数字既可以被5整除又可以被7整除
#include <stdio.h>
int main(int argc, char* argv[])
{
int nValue = 0;
scanf("%d", &nValue);
if (nValue % 5 == 0 && nValue % 7 == 0)
{
printf("这个数字既可以被5整除,也可以被7整除\r\n");
}
return 0;
}
2.逻辑或运算符`||`
- 逻辑或运算符的基本语法是:
表达式1 || 表达式2
- 其求值的结果规则是:
(1)当两个表达式均为0时,求值结果为0
(2)其他情况(只要有至少一个表达式为非0),求值结果为1
实例:判断一个年份,是否为闰年,判断闰年的标准是:能被100整除,同时能被400整除;或者不能被100整除,但是能被4整除
#include <stdio.h>
int main(int argc, char* argv[])
{
int nYear = 0;
scanf("%d", &nYear);
//能被100整除,同时能被400整除
// nYear % 100 == 0 && nYear % 400 == 0
//不能被100整除,但是能被4整除
// nYear % 100 != 0 && nYear % 4 == 0
if (
(nYear % 100 == 0 && nYear % 400 == 0)
|| (nYear % 100 != 0 && nYear % 4 == 0)
)
{
printf("这个是闰年\r\n");
}
else
{
printf("不是闰年\r\n");
}
return 0;
}
3.逻辑非运算符`!`
- 逻辑非就是将表达式结果“反置”,其基本语法是:
!原表达式
- 其求值规则是:
(1)如果原表达式为0,则求值后结果为1
(2)如果原表达式结果为非0,则求值后结果为0
实例:
#include <stdio.h>
int main(int argc, char* argv[])
{
int nValue = 0;
scanf("%d", &nValue);
printf("原有表达式的值:%d\r\n", nValue);
nValue = !nValue;
printf("逻辑取反后的表达式的值:%d\r\n", nValue);
return 0;
}
运行结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/246798b8be314dfdb06aa81f741ca5d6.png)
4.逻辑运算符的短路特点
先看一段代码,推测以下代码的打印结果:
#include <stdio.h>
int main(int argc, char* argv[])
{
(printf("Hello, world!\r\n") ) || (printf("something else\r\n!"));
return 0;
}
运行结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/43a1efeb7f554aa3a906ec2f5475a42e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5Y2B5pyI5pen5Z-O,size_20,color_FFFFFF,t_70,g_se,x_16)
实际上,这样的打印结果,与逻辑运算符的短路特性有关。
简单总结如下:
(1)如果||运算符左边的表达式为真(非0),则右边的表达式不再执行
(2)如果&&运算符左边的表达式为假(0),则右边的表达式不再执行
5.学习视频地址:C语言基础入门48篇_14_逻辑运算符