📄 c语言基础(06-逻辑运算符和逻辑表达式).htm
字号:
<TD></TD>
<TD></TD></TR></TBODY></TABLE>
<P>把表中的过程写成逻辑运算就是: C = A || B 这就是一个逻辑表达式,它是一个“或”运算的逻辑表达式。这个表达式要表达的是这个意思--如果要使得C为1,只要 A“或”B其中之一为 1即可以达到。所以“||”运算称为“或”运算。<BR><FONT color=#0000ff>思考</FONT>--如果有一个表达式 C = A || B || C 怎样理解这个逻辑表达式?</P>
<P>例 2:假设一个房间外面有一个晒台,那么这个房间就纵向开着二个门,要到晒台去,必须要过这二个门,很明显这二个门必须都是开着的才行,否则只要其中一个门关着就去不了晒台。列表如下:<BR></P>
<TABLE style="WIDTH: 425px; HEIGHT: 124px" border=1>
<TBODY>
<TR>
<TD>说明</TD>
<TD>C</TD>
<TD>A</TD>
<TD>B</TD></TR>
<TR>
<TD>二个门都关着,去不了晒台</TD>
<TD>0</TD>
<TD>0</TD>
<TD>0</TD></TR>
<TR>
<TD>门A关着,去不了晒台</TD>
<TD>0</TD>
<TD>0</TD>
<TD>1</TD></TR>
<TR>
<TD>门B关着,去不了晒台</TD>
<TD>0</TD>
<TD>1</TD>
<TD>0</TD></TR>
<TR>
<TD>门A与门B都开着,可以去晒台</TD>
<TD>1</TD>
<TD>1</TD>
<TD>1</TD></TR>
<TR>
<TD></TD>
<TD></TD>
<TD></TD>
<TD></TD></TR></TBODY></TABLE>
<P>把表中的过程写成逻辑运算式就是: C = A && B && C ,用一句话来描述这个表达式--如果要使得C为1,必须A‘与’B都为1才行,否则其中任一个为0,C就为0。所以“&&”运算符称为“与”运算。<BR><FONT color=#0000ff>思考</FONT>--如果有一个表达式 C = A && B && C 怎样理解这个逻辑表达式?</P>
<P>例 3:有一个问题如下,有一个晚会,对参加晚会的人有一定的条件限制,教师可以参加,学生当中只有年龄达到16岁以上的男生才能参加,怎样用上面所讲的逻辑运算来表达这样的逻辑关系?<BR>设能够参加晚会为D,教师为A,男生为B,16岁以上为C,可以用下式来描述:<BR>D = A || ( B && C ) /*这个表达式可以理解吗,可以参照上面表格用0、1来写一下*/</P>
<P>例 4:下面是一个程序,用到了if判断语句(if是如果的意思)<BR>#include<stdio.h><BR>void main()<BR>{<BR> int a=0,b=0,c=0;<BR> scanf("%d%d%d",&a,&b,&c); /*从键盘输入参加者的条件*/<BR> if((a||(b&&c)) /*如果是教师或者是16岁以上的男生*/<BR> printf("你可以参加这个晚会。"); /*输出可以参加的信息*/<BR> else /*否则*/<BR> printf("你不能参加这个晚会。"); /*输出不能参加的信息*/<BR>}</P>
<P><FONT color=#0000ff>逻辑量和逻辑值</FONT><BR>在逻辑表达式里有参加逻辑运算的逻辑量及逻辑运算最后的结果(逻辑值),把这二个概念区分开来和记住它们是很重要的。<BR><FONT color=#00008b>什么是逻辑量--凡是参加逻辑运算的变量、常量都是逻辑量。</FONT><BR>我们来仔细分析一下哪些是逻辑量,哪些是逻辑值。<BR>要表达一件事情是否成立是这样描述的:“如果他来了,这件事情一定能成功”。用程序语句描述就是 if(a!=0)在这个语句里用变量a来表示他来与不来这件事,变量的值为1说明他来了,为0就是不来。在C语言中,一般不写成这样(如果一定要写成if(a!=0),别人一看你的程序就知道你是编程菜鸟),而是写成 if(a)。<FONT color=#0000ff>括号里面的变量a就是逻辑量</FONT>。当该逻辑量的逻辑值为1时,if表达式为真,这时可以执行if 后的的程序语句。当该逻辑量的逻辑值为0时,if表达式为假,就不能执行if后面的程序语句。可以看出,if表达式能否成立是要看“逻辑量”最后的“逻值值”是否为1来判断的。<BR><FONT color=#00008b>什么是逻辑值--逻辑量、逻辑表达式其最后的运算结果的值就是逻辑值</FONT>。<FONT color=#000000>逻辑值只能是“0”和“1”这二个数。“1”表示逻辑真(成立);“0”表示逻辑假(不成立)。<BR></FONT><FONT color=#00008b>一切非“0”的逻辑量其逻辑值都为真</FONT>。<FONT color=#000000>正确理解这句话很重要。例:if(-1),这一句可以这样来分析--首先“-1”是一个非“0”的逻辑量,它的逻辑值为“1”,那么这个if语句就成为 if(1),这个if表达式成立。<BR><BR>思考:下面的式子中,哪个语句不被执行<BR> int a=0,b=10; if(a) {b++;a++} a+=10; if(b) {a=10;b=-10;} if(b)a=0;<BR><BR><FONT color=#0000ff>C语言中进行逻辑运算时要注意的问题</FONT>:<BR></FONT>例1:<BR>现在要判断一个变量的值是否在12到30之间,很自然想到了这样一个表达式:<BR>scanf("%d",&a);<BR>if(12<a<30) /*这样的写法对吗*/<BR> printf("%d".a); <BR>把这样的语句放在程序里编译一下,没有什么不正常的,编译通过。<BR>但是在运行的时候就会出问题。下面仔细分析一下if语句的运行过程:<BR>表达式12<a<30中首先进行12<a的判断,如果a>12则为真,否则为假。设a的值为14,些时表达式结果为逻辑真,那么整个表达式if(12<a<30)成为if(1<30)(注意这个新的表达式中的1是12<a的逻辑值),这时问题就出现了,可以看到当变量a的值大于12的时候总有1<30,所以后面的<30这个关系表达式是多余的了。另外假设a的值小于12也会出现这样的情况。由些看来这样写法肯定是错的。<BR>正确的写法应该是:<BR>if((12<a)&&(a<30)) /*如果变量a的值大于12并且小于30*/<BR>这样不但编译通过,运行结果也是对的了。<BR></P> </td>
</tr>
</table>
</div>
</td>
</tr>
<tr>
<td width=758 bgColor=#b1bde0>
<P align=right>教程录入:Sunpeople 责任编辑:Sunpeople </P></td>
</tr>
<tr>
<td height=16>
<form method="POST" action="--WEBBOT-SELF--">
<!--webbot bot="SaveResults" U-File="fpweb:///_private/form_results.csv" S-Format="TEXT/CSV" S-Label-Fields="TRUE" -->
<p align="left"> <li>上一个教程: <a class='LinkPrevArticle' href='/c/ShowArticle.asp?ArticleID=23' title='文章标题:C语言基础(04-反馈测试题01)
作 者:dd
更新时间:2006-6-6 17:59:36'>C语言基础(04-反馈测试题01)</a></li><BR> <li>下一个教程: <a class='LinkNextArticle' href='/c/ShowArticle.asp?ArticleID=25' title='文章标题:C语言基础(07-C语言中的关键字)
作 者:dd
更新时间:2006-6-6 18:01:29'>C语言基础(07-C语言中的关键字)</a></li></p>
</form>
</td>
</tr>
<tr>
<td width=758 bgColor=#adb9dd>##相关推荐:</td>
</tr>
<tr>
<td width=758>
<div align=right>
<table cellSpacing=0 cellPadding=0 width="99%">
<!-- MSTableType="layout" -->
<tr>
<td vAlign=top height=118><a class='LinkArticleCorrelative' href='/c/ShowArticle.asp?ArticleID=1422' title='文章标题:06.9全国计算机等级考试二级C语言上机题
作 者:未知
更新时间:2006-11-4 17:32:49' target="_self">06.9全国计算机等级考试二级…</a><br><a class='LinkArticleCorrelative' href='/c/ShowArticle.asp?ArticleID=1421' title='文章标题:06.9全国计算机等级考试二级C语言上机题
作 者:未知
更新时间:2006-11-4 17:32:04' target="_self">06.9全国计算机等级考试二级…</a><br><a class='LinkArticleCorrelative' href='/c/ShowArticle.asp?ArticleID=1420' title='文章标题:06.9全国计算机等级考试二级C语言上机题
作 者:未知
更新时间:2006-11-4 17:31:17' target="_self">06.9全国计算机等级考试二级…</a><br><a class='LinkArticleCorrelative' href='/c/ShowArticle.asp?ArticleID=1419' title='文章标题:06.9全国计算机等级考试二级C语言上机题
作 者:未知
更新时间:2006-11-4 17:30:27' target="_self">06.9全国计算机等级考试二级…</a><br><a class='LinkArticleCorrelative' href='/c/ShowArticle.asp?ArticleID=1418' title='文章标题:06.9全国计算机等级考试二级C语言上机题
作 者:未知
更新时间:2006-11-4 17:21:25' target="_self">06.9全国计算机等级考试二级…</a><br><a class='LinkArticleCorrelative' href='/c/ShowArticle.asp?ArticleID=1417' title='文章标题:2006年9月23日计算机等级考试二级C上机试题
作 者:未知
更新时间:2006-11-4 17:19:24' target="_self">2006年9月23日计算机等级考试…</a><br><a class='LinkArticleCorrelative' href='/c/ShowArticle.asp?ArticleID=1416' title='文章标题:全国计算机等级考试二级C语言上机题2
作 者:未知
更新时间:2006-11-4 17:16:40' target="_self">全国计算机等级考试二级C语言…</a><br><a class='LinkArticleCorrelative' href='/c/ShowArticle.asp?ArticleID=1415' title='文章标题:全国计算机等级考试二级C语言上机题1
作 者:未知
更新时间:2006-11-4 16:58:55' target="_self">全国计算机等级考试二级C语言…</a><br><a class='LinkArticleCorrelative' href='/c/ShowArticle.asp?ArticleID=1192' title='文章标题:C语言教程第二章: 数据类型、运算符、表达式
作 者:佚名
更新时间:2006-9-29 17:26:28' target="_self">C语言教程第二章: 数据类型、…</a><br><a class='LinkArticleCorrelative' href='/c/ShowArticle.asp?ArticleID=1191' title='文章标题:C语言教程第二章: 数据类型、运算符、表达式
作 者:佚名
更新时间:2006-9-29 17:25:13' target="_self">C语言教程第二章: 数据类型、…</a><br></td>
</tr>
</table>
</div></td>
</tr>
</table>
<table height=164 cellSpacing=0 cellPadding=0 width=760 border=0>
<tr>
<td width=760 background=/images1/index_32.gif height=26>
<P align=center>| <A class=Bottom onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://lsjs.gsau.edu.cn');" href="#">设为首页</A> | <A class=Bottom href="javascript:window.external.addFavorite('http://lsjs.gsau.edu.cn','蓝色极速');">加入收藏</A> | <A class=Bottom href="mailto:wxw404@gmail.com">联系站长</A> | <A class=Bottom href="/FriendSite/Index.asp" target=_blank>友情链接</A> | <A class=Bottom href="/Copyright.asp" target=_blank>版权申明</A> | </P></td>
</tr>
<tr>
<td width=760 background=/images1/index_33.gif height=138>
<P align=center>Copyright (C) 蓝色极速 All Rights Reserved<BR>建议使用:1024*768分辨率,16位以上颜色、Netscape6.0<BR>IE5.0以上版本浏览器和中文大字符集</P></td>
</tr>
</table>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -