c语言逻辑运算符怎么理解?

2024-12-29 01:17:32
推荐回答(4个)
回答1:

*****
*****凡是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{
printf("&&与运算结果为真");
}
{
printf("&&与运算果为假"); //执行, 因为右操作数值为0,逻辑值为假。 再经求与,结果为假!
}

// 或 “||”
if( (intValue{
printf("||或运算结果为真");//执行,因为左操作数()逻辑值值为1,逻辑值为真。 再经求或,结果为真!
}
{
printf("||或运结果为假");
}

// 求反 “!”
if(!pLong)
{
printf("!求反运算结果为真");
}
{
printf("!求反运算结果为假"); //执行,因为唯一的右操作是地址肯定不为0。逻辑值为真。 再经求反,结果为假!
}
******
******花了30多分钟回答你的问题,哈哈!成copy的啦!随便你怎么想,你要是觉得我写的东西对你没帮助的话,我没有什么好说的......

回答2:

C语言中的逻辑运算符使用规则如下:

1、逻辑运算符是根据表达式的值来返回真值或是假值。在C语言中没有专门的真值和假值,认定非0为真值,0为假值。

2、逻辑运算符运算规则:|| 或:两个条件中,只要有一个成立,则结果就成立;&& 与:两个条件中,两个同时成立,则结果成立,否则不成立;!  非:取反之意,如果是真,结果是假,如果是假,结果是真。

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

回答3:

*****
*****凡是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&&
longValue)
{
printf("&&与运算结果为真");
}
{
printf("&&与运算果为假");
//执行,
因为右操作数值为0,逻辑值为假。
再经求与,结果为假!
}
//

“||”
if(
(intValue||
longValue)
{
printf("||或运算结果为真");//执行,因为左操作数()逻辑值值为1,逻辑值为真。
再经求或,结果为真!
}
{
printf("||或运结果为假");
}
//
求反
“!”
if(!pLong)
{
printf("!求反运算结果为真");
}
{
printf("!求反运算结果为假");
//执行,因为唯一的右操作是地址肯定不为0。逻辑值为真。
再经求反,结果为假!
}
******
******花了30多分钟回答你的问题,哈哈!成copy的啦!随便你怎么想,你要是觉得我写的东西对你没帮助的话,我没有什么好说的......

回答4:

C语言中逻辑运算符有三个:

1、&&:与运算,表示两个对象只要有一个为0,结果就为0,全为1则结果为1
2、||:或运算,表示两个对象只要有一个为1,则结果为1,全为0则结果为0
3、!:非运算,表示对运算对象取反,对象为0,结果为1,对象为1,结果为0