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 == 0if ((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;}
运行结果:
4.逻辑运算符的短路特点
先看一段代码,推测以下代码的打印结果:
#include <stdio.h>int main(int argc, char* argv[]){(printf("Hello, world!\r\n") ) || (printf("something else\r\n!"));return 0;}
运行结果:
实际上,这样的打印结果,与逻辑运算符的短路特性有关。
简单总结如下:
(1)如果||运算符左边的表达式为真(非0),则右边的表达式不再执行
(2)如果&&运算符左边的表达式为假(0),则右边的表达式不再执行
5.学习视频地址:C语言基础入门48篇_14_逻辑运算符
C语言基础入门48篇_14_逻辑运算符(逻辑与() 逻辑或(||) 逻辑非(感叹号) 逻辑运算符的短路特点:左为0右不执行 ||左为1右不执行)