匿名用户

1级

2013-05-30 回答

逻辑运算符把各个运算的变量(或常量)连接起来组成一个逻辑表达式。

逻辑运算符有4个,它们分别是: !(逻辑非)、 ||(逻辑或)、&&(逻辑与) ^(异或)。在位运算里面还有 &(位与)、|(位或)的运算。

什么是逻辑运算--逻辑运算用来判断一件事情是“对”的还是“错”的,或者说是“成立”还是“不成立”,判断的结果是二值的,即没有“可能是”或者“可能不是”,这个“可能”的用法是一个模糊概念,在计算机里面进行的是二进制运算,逻辑判断的结果只有二个值,称这二个值为“逻辑值”,用数的符号表示就是“1”和“0”。其中“1”表示该逻辑运算的结果是“成立”的,如果一个逻辑运算式的结果为“0”,那么这个逻辑运算式表达的内容“不成立“。

例 1:通常一个教室有二个门,这二个门是并排的。要进教室从门A进可以,从门B进教室也行,用一句话来说是“要进教室去,可以从A门进‘或者’从B门进”

用逻辑符号来表示这一个过程--能否进教室用符号C表示,教室门分别为A和B。C的值为1表示可以进教室,为0 表示进不了教室。A和B的值为1时表示门是开的,为0表示门是关着的,列表如下:

说明 C A B 2个教室的门都关着,进不去教室 0 0 0 门B是开着的,可以进去 1 0 1 门A是开着的,可以进去 1 1 0 门A和B都是开着的,可以进去 1 1 1

把表中的过程写成逻辑运算就是: C = A || B 这就是一个逻辑表达式,它是一个“或”运算的逻辑表达式。这个表达式要表达的是这个意思--如果要使得C为1,只要 A“或”B其中之一为 1即可以达到。所以“||”运算称为“或”运算。

思考--如果有一个表达式 C = A || B || C 怎样理解这个逻辑表达式?

例 2:假设一个房间外面有一个晒台,那么这个房间就纵向开着二个门,要到晒台去,必须要过这二个门,很明显这二个门必须都是开着的才行,否则只要其中一个门关着就去不了晒台。列表如下:

说明 C A B 二个门都关着,去不了晒台 0 0 0 门A关着,去不了晒台 0 0 1 门B关着,去不了晒台 0 1 0 门A与门B都开着,可以去晒台 1 1 1

把表中的过程写成逻辑运算式就是: C = A && B && C ,用一句话来描述这个表达式--如果要使得C为1,必须A‘与’B都为1才行,否则其中任一个为0,C就为0。所以“&&”运算符称为“与”运算。

思考--如果有一个表达式 C = A && B && C 怎样理解这个逻辑表达式?

例 3:有一个问题如下,有一个晚会,对参加晚会的人有一定的条件限制,教师可以参加,学生当中只有年龄达到16岁以上的男生才能参加,怎样用上面所讲的逻辑运算来表达这样的逻辑关系?

设能够参加晚会为D,教师为A,男生为B,16岁以上为C,可以用下式来描述:

D = A || ( B && C ) /*这个表达式可以理解吗,可以参照上面表格用0、1来写一下*/

例 4:下面是一个程序,用到了if判断语句(if是如果的意思)

#include

void main()

{

int a=0,b=0,c=0;

scanf("%d%d%d",&a,&b,&c); /*从键盘输入参加者的条件*/

if((a||(b&&c)) /*如果是教师或者是16岁以上的男生*/

printf("你可以参加这个晚会。"); /*输出可以参加的信息*/

else /*否则*/

printf("你不能参加这个晚会。"); /*输出不能参加的信息*/

}

逻辑量和逻辑值

在逻辑表达式里有参加逻辑运算的逻辑量及逻辑运算最后的结果(逻辑值),把这二个概念区分开来和记住它们是很重要的。

什么是逻辑量--凡是参加逻辑运算的变量、常量都是逻辑量。

我们来仔细分析一下哪些是逻辑量,哪些是逻辑值。

要表达一件事情是否成立是这样描述的:“如果他来了,这件事情一定能成功”。用程序语句描述就是 if(a!=0)在这个语句里用变量a来表示他来与不来这件事,变量的值为1说明他来了,为0就是不来。在C语言中,一般不写成这样(如果一定要写成if(a!=0),别人一看你的程序就知道你是编程菜鸟),而是写成 if(a)。括号里面的变量a就是逻辑量。当该逻辑量的逻辑值为1时,if表达式为真,这时可以执行if 后的的程序语句。当该逻辑量的逻辑值为0时,if表达式为假,就不能执行if后面的程序语句。可以看出,if表达式能否成立是要看“逻辑量”最后的“逻值值”是否为1来判断的。

什么是逻辑值--逻辑量、逻辑表达式其最后的运算结果的值就是逻辑值。逻辑值只能是“0”和“1”这二个数。“1”表示逻辑真(成立);“0”表示逻辑假(不成立)。

一切非“0”的逻辑量其逻辑值都为真。正确理解这句话很重要。例:if(-1),这一句可以这样来分析--首先“-1”是一个非“0”的逻辑量,它的逻辑值为“1”,那么这个if语句就成为 if(1),这个if表达式成立。

思考:下面的式子中,哪个语句不被执行

int a=0,b=10; if(a) {b++;a++} a+=10; if(b) {a=10;b=-10;} if(b)a=0;

C语言中进行逻辑运算时要注意的问题:

例1:

现在要判断一个变量的值是否在12到30之间,很自然想到了这样一个表达式:

scanf("%d",&a);

if(12

printf("%d".a);

把这样的语句放在程序里编译一下,没有什么不正常的,编译通过。

但是在运行的时候就会出问题。下面仔细分析一下if语句的运行过程:

表达式12

c语言逻辑运算的规则,C语言中逻辑运算符的规则是什么相关推荐

  1. drools规则中调用其它规则_Makefile文件中包含哪些规则?

    想要书写一个完整的 Makefile文件,需要了解 Makefile 的相关的书写规则.我们已经知道了 Makefile 描述的是文件编译的相关规则,它的规则主要是两个部分组成,分别是依赖的关系和执行 ...

  2. outlook邮箱邮件大小限制_Outlook 中的邮件规则容量限制

    症状: 使用Microsoft Office Outlook 中,您可能会注意到某些规则被禁用,无法启用.其他规则可正常工作.如果尝试启用被禁用的规则,您会收到以下错误消息: 一个或多个规则无法上载到 ...

  3. html类名定义规则_好程序员分享Java语言中的标识符规则

    好程序员分享Java语言中的标识符规则,在编程过程中,经常需要在程序中定义一些符号来标记一些名称,如包名.类名.方法名.参数名.变量名等,这些符号被称为标识符.标识符可以由任意顺序的大小写字母.数字. ...

  4. firewalld中理解直接规则和富语言

    firewalld 中理解直接规则 firewalld提供了'direct interface" (直接接口), 它允许管理员手动编写的iptables. ip6tables 和ebtabl ...

  5. python 语言变量命名规则的是_Python中变量命名规则有哪些

    Python中变量命名规则有哪些 发布时间:2020-09-24 13:05:21 来源:亿速云 阅读:72 今天就跟大家聊聊有关Python中变量命名规则有哪些,可能很多人都不太了解,为了让大家更加 ...

  6. c语言逻辑运算类指令,组成原理第二章——计算机指令

    计算机指令 算术运算指令 add a, b, c# a = b + c 设计原则一--对指令进行规整化设置 简化实现 获得更高的性能,更低的成本 代码示例 C语言代码 f = (g + h) - (i ...

  7. C语言——深度剖析数据在内存中的存储

    大家好!我是保护小周ღ,本期为大家带来的是深度剖析数据在内存中的存储,不知道,大家学了这么久C语言,有没有想过一个问题,我们在程序设计中的数据是怎么在计算机中存储的?我们都知道 一个整型数据 int ...

  8. 综述 | 语言分析技术在社会计算中的应用

    综述 | 语言分析技术在社会计算中的应用 刘知远 社媒派SMP 2016-01-27 中国中文信息学会社会媒体处理专委会 传统社会科学研究中的数据主要通过调查问卷或口头采访等方式获取,既耗时耗力,数据 ...

  9. c语言 元组顺序随机化,为什么关系中的元组没有先后顺序且不允许有重复元组?...

    满意答案 lxy70452 2013.03.31 采纳率:46%    等级:11 已帮助:8117人 1. 解释下述名词 关系模型,关系模式,关系实例,属性,域, 元组,超键,候选键,主键, 实体完 ...

最新文章

  1. opencv 无法找到tbb_debug.dll
  2. C语言双链表遍历,插入,删除
  3. 免费教材丨第55期:Python机器学习实践指南、Tensorflow 实战Google深度学习框架
  4. 摘录cocos2d-x 从环境搭建到win32项目移植android平台
  5. joc杂志影响因子2019_另类统计!2019影响因子贡献文章排行榜,看完有点心塞
  6. 解决android扫描二维码时,用户禁止权限报错问题
  7. 弗拉明戈舞_百度百科
  8. IE6 IE8下背景图片不显示问题
  9. 分享制作精良的知识管理系统 配置SQL Server文档数据库 完美实现博客文章的的下载,存储和浏览...
  10. python调试_Python 调试
  11. POJ3264Balanced Lineup(线段树)
  12. node中的数据持久化
  13. 《『若水新闻』客户端开发教程》——08.设计新闻回复UI
  14. rabbitmq丢消息的处理方法
  15. 深入浅出ExtJS 第六章 布局
  16. [NLP]OpenNLP Maven工程的依赖
  17. NodeJS运行时抛出: Error: listen EADDRINUSE :::3000
  18. 浏览器野史 UserAgent列传
  19. Postman下载与安装操作步骤【超详细】
  20. 用HTML+CSS做一个漂亮简单的个人网页——樱木花道篮球3个页面 学生个人网页设计作品 学生个人网页模板 简单个人主页

热门文章

  1. 8种应用场景!嵌入式BI如何快速提升SaaS数据分析功能
  2. 怎么给照片降噪?分享两种简单好用的图片降噪方法
  3. 时间序列分析学习笔记
  4. 让对方qq崩溃的代码2020_为什么都瞧不起QQ邮箱?
  5. 需要mac触摸板增强工具的小伙伴看这里啦!
  6. linux中zlib解压错误,zipimport.zipimporter错误:无法解压缩数据;zlib在Linux中不可用...
  7. 修改老commit的message信息
  8. 手机解除移动宽带屏蔽_FANUC/三菱M70系统如何屏蔽伺服轴?
  9. 游戏网站怎样对接支付(知识介绍)
  10. Eigen::internal::plain_array<T, Size, MatrixOrArrayOptions, 32>::plain_array() [with T = double;