c语言逻辑运算符,c语言必背100代码
很多朋友对于c语言逻辑运算符和c语言必背100代码不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
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语言中逻辑运算符用法是什么
1、逻辑运算符是根据表达式的值来返回真值或是假值。在C语言中没有专门的真值和假值,认定非0为真值,0为假值。
2、逻辑运算符运算规则:
||或:两个条件中,只要有一个成立,则结果就成立;
&&与:两个条件中,两个同时成立,则结果成立,否则不成立;
!非:取反之意,如果是真,结果是假,如果是假,结果是真。
下为C语言逻辑运算||和&&的真值表:
c语言逻辑运算符怎么理解
*****
*****凡是C语言中的运算符大都有与之对应的操作数,而且操作数的数据类型往往都有一定的限制。C语言的逻辑运算符比较特别,它的操作数没有明确的数据类型,它们统称逻辑值,但是这个逻辑值却没有与之对应的数据类型,比如C++里面的bool已经Windows里面的BOOL,很遗憾C没有自己的逻辑类型。
*****
*****C规定,所有带有整形性质的数据类型都可以作为逻辑运算符的操作数,包括所有整形(有符号/无符号int、long),字符型(有符号/无符号char),以及所有指针。这些数据类型定义的变量,都与一个整数对应,只要这个整数不是0,C就把它当作逻辑值的‘真’,只有当变量值为0时,变量对应的逻辑值才为‘假’。
*****
*****编译器是如何使用这种‘真’‘假’值呢?一般在选择判断语句,即if语句。只要if()括号里的值非零,编译器就认为条件满足(假设成立),从而执行后面的语句组。
*****
*****准备好了吗?现在可以开始谈运算符了。运算符就是对以上介绍的一个或多个逻辑值(可以用1统一代表非零作为真值,用0代表假值)进行运算的符号,其中有“&&”、“||”、“!”三个。第一个,对两个逻辑值做“与运算”,只有当两个逻辑值都为真时结果才是真,可以理解成逻辑值相乘;第二个,对两个逻辑值做“或运算”,只要两个逻辑值其中一个为真结果就为真,可以理解成逻辑值相加;第三个,求反,顾名思义,操作数逻辑值为真,求反运算结果则为假,反之亦然。
*****
*****说了不少,不知够不够清楚,举几个例子吧。
// Example 1:
int intValue;
long longValue;
char charValue;
long* pLong;
intValue=-100;
longValue= 0;
charValue='A';
pLong=&longValue;
//与“&&”
if((intValue<charValue)&& longValue)
{
printf("&&与运算结果为真");
}
{
printf("&&与运算果为假");//执行,因为右操作数值为0,逻辑值为假。再经求与,结果为假!
}
//或“||”
if((intValue<charValue)|| longValue)
{
printf("||或运算结果为真");//执行,因为左操作数()逻辑值值为1,逻辑值为真。再经求或,结果为真!
}
{
printf("||或运结果为假");
}
//求反“!”
if(!pLong)
{
printf("!求反运算结果为真");
}
{
printf("!求反运算结果为假");//执行,因为唯一的右操作是地址肯定不为0。逻辑值为真。再经求反,结果为假!
}
******
******花了30多分钟回答你的问题,哈哈!成copy的啦!随便你怎么想,你要是觉得我写的东西对你没帮助的话,我没有什么好说的......
好了,文章到这里就结束啦,如果本次分享的c语言逻辑运算符和c语言必背100代码问题对您有所帮助,还望关注下本站哦!