C语言中逻辑运算符的规则是什么

 逻辑运算符把各个运算的变量(或常量)连接起来组成一个逻辑表达式。
逻辑运算符有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<a<30) /*这样的写法对吗*/
printf("%d".a);
把这样的语句放在程序里编译一下,没有什么不正常的,编译通过。
但是在运行的时候就会出问题。下面仔细分析一下if语句的运行过程:
表达式12<a<30中首先进行1212则为真,否则为假。设a的值为14,些时表

  • 鍦C璇█涓,閫昏緫涓庛侀昏緫鎴栧拰閫昏緫闈鏈変粈涔鍖哄埆?
    绛旓細鍦C璇█涓锛岄昏緫涓庯紙&&锛夈侀昏緫鎴栵紙||锛夊拰閫昏緫闈(!)鏄笁绉嶅熀鏈鐨勯昏緫杩愮畻绗銆傚畠浠垎鍒敤浜庤繛鎺ュ竷灏旇〃杈惧紡骞跺垽鏂畠浠殑鐪熷亣銆傞昏緫涓庯紙&&锛夛細閫昏緫涓庤繛鎺ヤ袱涓竷灏旇〃杈惧紡锛屽彧鏈夊綋涓や釜琛ㄨ揪寮忕殑鍊奸兘鏄湡鏃讹紝鏁翠釜琛ㄨ揪寮忕殑鍊兼墠鏄湡銆傚惁鍒欙紝鏁翠釜琛ㄨ揪寮忕殑鍊煎氨鏄亣銆備緥濡傦細閫昏緫鎴栵紙||锛夛細閫昏緫鎴栬繛鎺ヤ袱涓竷灏...
  • C璇█涓殑閫昏緫涓杩愮畻绗︽槸"&"杩樻槸" or"??
    绛旓細C璇█涓殑閫昏緫涓杩愮畻绗锛圓ND锛夌鍙锋槸"&"銆傚湪C璇█涓紝閫昏緫涓庤繍绠楃"&"鐢ㄤ簬鍒ゆ柇涓や釜鏉′欢鏄惁鍚屾椂婊¤冻銆傚鏋滀袱涓搷浣滄暟閮戒负鐪燂紙闈為浂锛夛紝鍒欑粨鏋滀负鐪燂紙闈為浂锛夛紝鍚﹀垯缁撴灉涓哄亣锛堥浂锛夈備緥濡傦紝浠ヤ笅浠g爜灏嗘墦鍗"Both true"锛屽洜涓虹涓涓拰绗簩涓潯浠堕兘涓虹湡锛歩nt a = 1; int b = 2; if (a & b)...
  • c璇█涓&&鏄粈涔?
    绛旓細&&鏄昏緫涓庤繍绠楋紝閫昏緫杩愮畻绗︾殑涓绉 杩愮畻瑙勫垯鏄 鐪 && 鐪 = 鐪 鐪 && 鍋 = 鍋 鍋 && 鐪 = 鍋 鍋 && 鍋 = 鍋 鍏朵腑锛屽墠闈㈢殑涓や釜鏄弬涓庤繍绠楃殑鍏冪礌锛岀瓑鍙峰悗闈㈡槸杩愮畻鐨勭粨鏋 鐒惰屽湪c璇█涓娌℃湁'鐪'鍜'鍋'涓や釜鐜╂剰 灏辩敤1琛ㄧず鐪燂紝0琛ㄧず鍋 鍦ㄨ繍绠楃殑鏃跺欙紝0涓哄亣锛岄潪0鍗充负鐪 (-1)&&...
  • 璁$畻鏈C璇█涓昏緫杩愮畻绗鈥滀笌鈥濃滄垨鈥濃滈潪鈥濅紭鍏堢骇鏄庢牱鐨?
    绛旓細闈炵殑浼樺厛绾ф渶楂橈紙瀹冩槸涓涓崟鐩搷浣滅锛変笌鐨勪紭鍏堢骇娆′箣鎴栫殑浼樺厛绾э紝鏈浣庡崟鐩鎿嶄綔绗︾殑浼樺厛绾ф渶楂樸1锛&&锛氬綋涓斾粎褰撲袱涓繍绠楅噺鐨勫奸兘涓"鐪"鏃讹紝杩愮畻缁撴灉涓"鐪"锛屽惁鍒欎负"鍋"銆2锛 || 锛氬綋涓斾粎褰撲袱涓繍绠楅噺鐨勫奸兘涓"鍋"鏃讹紝杩愮畻缁撴灉涓"鍋"锛屽惁鍒欎负"鐪"銆3锛 ! 锛氬綋杩愮畻閲忕殑鍊间负"鐪"...
  • C璇█閫昏緫杩愮畻绗鍒嗗埆鏄粈涔?
    绛旓細C璇█閫昏緫杩愮畻绗鍒嗗埆鏄細鎴栵紙||锛夈佷笖锛&&锛夈侀潪锛!锛夛紝鍒嗗埆瀵瑰簲浜庡懡棰閫昏緫涓殑 OR銆丄ND銆丯OT杩愮畻銆傞昏緫杩愮畻绗︼細鎴 ||銆傚湪鍛介閫昏緫涓紝褰揚=1鎴朡=1鏃讹紝P||Q绛変簬1銆傞昏緫杩愮畻绗︼細涓 &&銆傚湪鍛介閫昏緫涓紝褰揚=1涓擰=1鏃讹紝P&&Q鎵嶇瓑浜1銆傞昏緫杩愮畻绗︼細闈 !銆傚湪鍛介閫昏緫涓紝褰揚绛変簬0鏃讹紝!P...
  • C璇█銆閫昏緫杩愮畻绗!鏄痏__缁撳悎鎬с
    绛旓細鍦 C 璇█涓锛閫昏緫杩愮畻绗 ! 鏄竴鍏冭繍绠楃锛屽畠鐨勭粨鍚堟ф槸浠庡彸寰宸︾殑銆備篃灏辨槸璇达紝鍦ㄨ〃杈惧紡涓瓨鍦ㄥ涓 ! 杩愮畻绗︽椂锛孋 璇█灏嗛鍏堣绠楁渶鍙宠竟鐨 ! 杩愮畻锛岀劧鍚庡啀璁$畻宸﹁竟鐨 ! 杩愮畻銆備緥濡傦細Copy code int a = 1, b = 0;!a && !b // 缁撴灉涓 0 鍦ㄨ繖涓緥瀛愪腑锛!a 鐨勭粨鏋滀负 0锛...
  • c璇█閫昏緫杩愮畻绗︽槸鎬庝箞杩愮畻鐨?鍍忓鏋渁=5 b=9 閭d箞a&&b寰鐨勬槸浠涔.a||...
    绛旓細閫昏緫杩愮畻绗︾殑鎿嶄綔鏁版槸閫昏緫鍊硷紝鍙湁涓や釜鍊硷紝涓涓槸0锛屽彟涓涓槸闈0銆傚浜"閫昏緫涓"杩愮畻绗"&&"锛屽彧瑕佷袱涓搷浣滄暟閮介潪闆舵椂锛岀粨鏋滄墠鏄湡(闈為浂)锛屽叾浠栨儏鍐甸兘鏄亣(闆)銆傚浜"閫昏緫鎴"杩愮畻绗"||",鍙鏈変竴涓搷浣滄暟涓虹湡锛屽垯缁撴灉灏变负鐪燂紝鍙湁浜屾搷浣滄暟閮戒负鍋囨椂锛岀粨鏋滄墠鏄亣銆傚a = 5锛宐 = 9锛c ...
  • C璇█閫昏緫鎴栦笌闈炵殑鐢ㄦ硶
    绛旓細鍩烘湰搴旂敤锛氶昏緫涓庯紝绗﹀彿涓衡&&鈥濓紝鍙湁涓や釜鎿嶄綔鏁伴兘鏄湡锛岀粨鏋滄墠鏄湡銆傞昏緫鎴栵紝鏄閫昏緫杩愮畻绗锛岀鍙锋槸鈥渱|鈥濄傝〃绀哄綋涓や釜鏉′欢涓湁浠讳竴涓潯浠舵弧瓒筹紝鈥滈昏緫鎴栤濈殑杩愮畻缁撴灉灏变负鈥滅湡鈥濄傗!鈥(閫昏緫闈)閫昏緫杩愮畻绗︺傗滈昏緫闈炩濆氨鏄寚鏈潵鍊肩殑鍙嶅笺備紭鍏堢骇锛C璇█涓锛杩愮畻绗︾殑杩愮畻浼樺厛绾у叡鍒嗕负15 绾...
  • 閫昏緫杩愮畻绗︽槸浠涔?
    绛旓細闂涓冿細c璇█涓昏緫杩愮畻绗︽槸浠涔? 涓: && : 鏈0鍒0. 0琛ㄧず鍋,1琛ㄧず鐪 鎴: || : 鏈1鍒1. 0琛ㄧず鍋,1琛ㄧず鐪 闈: ! : 鐪熷彉鍋, 鍋囧彉鐪 闂鍏細浠涔堟槸閫昏緫杩愮畻绗 閫昏緫杩愮畻绗﹀張鍙潯浠惰繍绠楃锛屽嵆杩愮畻鐨勭粨鏋滃彧鏈変袱绉嶏紝鐪熸垨鍋囷紝t楗e 鎴 false 鍦ㄤ笉鍚岀殑璇█涓昏緫杩愮畻绗﹂兘鏈夋墍涓嶅悓...
  • &鏄粈涔堣繍绠楃
    绛旓細&鏄疉ND杩愮畻绗︼紝鏄竴绉閫昏緫杩愮畻绗銆傚叾杩愮畻瑙勫垯濡備笅锛1&1=1锛涚湡&&鐪=鐪熴1&0=0锛涚湡&&鍋=鍋囥0&1=0锛涘亣&&鐪=鍋囥0&0=0锛涘亣&&鍋=鍋囥
  • 扩展阅读:扫一扫题目出答案 ... c#三元运算符是什么 ... c++运算符大全 ... 逻辑运算符∧∨ ... 逻辑运算符有哪三种 ... 在c语言中的运算规则 ... c语言按位逻辑运算符 ... c#中唯一的三元运算符 ... c语言中与运算规则 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网