我们在平常写代码的过程中会经常用到||!三个运算符它们都是逻辑运算符有着自己的运算规则德摩根定律就是这三个运算符结合使用的结果。下面就为大家介绍一下。一、逻辑运算符逻辑运算符简而言之就是提供逻辑判断功能的运算符这也是它们的功能。主要有以下三个(逻辑与) 、|| (逻辑或)、! (逻辑非)下面逐一介绍它们的运算规则和一些例子。1.逻辑与1运算规则与取值运算规则两侧表达式都为真则为真否则为假取值 a b ab非0 非0 真非0 0 假0 非0 假0 0 假2举例我们来举个例子用一下这个运算符。//6~8月为夏季用代码实现 #define _CRT_SECURE_NO_WARNINGS #include stdio.h int main() { int month; printf(请输入一个月份); scanf(%d,month); if(month6 month8) { printf(夏季\n); } return 0;上面这个例子就需要同时满足两个判断条件条件表达式才为真否则为假。2.||逻辑或1运算规则与取值运算规则两个至少有一个表达式为真则为真否则为假取值 a b a||b非0 非0 真非0 0 真0 非0 真0 0 假2举例我们再举一个例子用一下这个运算符//9月或10月或11月为秋季请用代码实现 #define _CRT_SECURE_NO_WARNINGS #include stdio.h int main() { int month; printf(请输入一个月份); scanf(%d,month); if(month9 || month10 ||month11) { printf(秋季\n); } return 0; }这个例子里if的条件表达式的条件只要满足其一整体就为真这也符合或运算符的运算规则。3.!取反1运算规则与取值运算规则改变单个表达式真假非0表示真0表示假。取值 a !a非0 0 固定值0 1 (固定值这里的!a只可能等于0或1都是固定值。2举例这个运算符运算规则比较简单但我们也举个例子用一下它。#define _CRT_SECURE_NO_WARNINGS #include stdio.h int main() { int flag; scanf(%d,flag); if(!flag) //flag0; printf(哈哈\n); return 0; }这个例子里的flag是非0值经过取反运算符变为0最后打印哈哈字符串。二、短路问题1.定义逻辑运算符左边的结果已经能确定整个表达式的值右边就不算了2.产生原因逻辑运算符的运算顺序从左至右3.分类(1)(与运算符的短路当运算符左边为假(0)时右边不算发生短路因为右边为任何值不影响整体为0。(2) || (或)运算符的短路当运算符左边为真(非0)时右边不算发生短路因为右边的值不影响整体为真。三、德摩根定律讲完了这些我们就要开始讲德摩根定律了这个定律把我们前面讲的三个逻辑运算符都用上了。1.定义版本 1简洁去掉括号前的!时每个条件分别取反与||互换转换前后逻辑等价。版本 2大白话德摩根定律对于!(条件1 条件2)、!(条件1 || 条件2)这类表达式拆分括号时每个小条件取反同时互换和||无需额外整体取反逻辑不变。2.核心公式!(AB)!A||!B !(A||B)!A!B 知道这两条公式就行了3.举例我们来举个例子用一下这个定律while (!(hand 0 hand 2))上面while语句里的表达式语句利用定律第一条可以得到hand0 || hand2,大家可以对照看一下。
逻辑运算符与德摩根定律
我们在平常写代码的过程中会经常用到||!三个运算符它们都是逻辑运算符有着自己的运算规则德摩根定律就是这三个运算符结合使用的结果。下面就为大家介绍一下。一、逻辑运算符逻辑运算符简而言之就是提供逻辑判断功能的运算符这也是它们的功能。主要有以下三个(逻辑与) 、|| (逻辑或)、! (逻辑非)下面逐一介绍它们的运算规则和一些例子。1.逻辑与1运算规则与取值运算规则两侧表达式都为真则为真否则为假取值 a b ab非0 非0 真非0 0 假0 非0 假0 0 假2举例我们来举个例子用一下这个运算符。//6~8月为夏季用代码实现 #define _CRT_SECURE_NO_WARNINGS #include stdio.h int main() { int month; printf(请输入一个月份); scanf(%d,month); if(month6 month8) { printf(夏季\n); } return 0;上面这个例子就需要同时满足两个判断条件条件表达式才为真否则为假。2.||逻辑或1运算规则与取值运算规则两个至少有一个表达式为真则为真否则为假取值 a b a||b非0 非0 真非0 0 真0 非0 真0 0 假2举例我们再举一个例子用一下这个运算符//9月或10月或11月为秋季请用代码实现 #define _CRT_SECURE_NO_WARNINGS #include stdio.h int main() { int month; printf(请输入一个月份); scanf(%d,month); if(month9 || month10 ||month11) { printf(秋季\n); } return 0; }这个例子里if的条件表达式的条件只要满足其一整体就为真这也符合或运算符的运算规则。3.!取反1运算规则与取值运算规则改变单个表达式真假非0表示真0表示假。取值 a !a非0 0 固定值0 1 (固定值这里的!a只可能等于0或1都是固定值。2举例这个运算符运算规则比较简单但我们也举个例子用一下它。#define _CRT_SECURE_NO_WARNINGS #include stdio.h int main() { int flag; scanf(%d,flag); if(!flag) //flag0; printf(哈哈\n); return 0; }这个例子里的flag是非0值经过取反运算符变为0最后打印哈哈字符串。二、短路问题1.定义逻辑运算符左边的结果已经能确定整个表达式的值右边就不算了2.产生原因逻辑运算符的运算顺序从左至右3.分类(1)(与运算符的短路当运算符左边为假(0)时右边不算发生短路因为右边为任何值不影响整体为0。(2) || (或)运算符的短路当运算符左边为真(非0)时右边不算发生短路因为右边的值不影响整体为真。三、德摩根定律讲完了这些我们就要开始讲德摩根定律了这个定律把我们前面讲的三个逻辑运算符都用上了。1.定义版本 1简洁去掉括号前的!时每个条件分别取反与||互换转换前后逻辑等价。版本 2大白话德摩根定律对于!(条件1 条件2)、!(条件1 || 条件2)这类表达式拆分括号时每个小条件取反同时互换和||无需额外整体取反逻辑不变。2.核心公式!(AB)!A||!B !(A||B)!A!B 知道这两条公式就行了3.举例我们来举个例子用一下这个定律while (!(hand 0 hand 2))上面while语句里的表达式语句利用定律第一条可以得到hand0 || hand2,大家可以对照看一下。