未被驯化的甲鱼 发表于 2022-10-9 21:32:06

同学们,如何理解?“逻辑运算符两侧运算对象的数据类型可以是任何类型的数据 ...”

同学们,如何理解?
“逻辑运算符两侧运算对象的数据类型可以是任何类型的数据,因为逻辑操作符的两边最终都被转换成bool值操作 ”

说人话就是

if(任何数据类型 && 任何数据类型) //这样是可以跑的

但我不理解内部过程
比如
#include <stdio.h>
main()
{
        char ch1='a',ch2='b';
   if(ch1 && ch2){
           printf("true");
   }
   else
           printf("false");
}
====================
这个 if(ch1 && ch2) 是怎么判断的?
是不是这样?
ch1 自动转换成ASCII码97
ch2 自动转换成ASCII码98
然后
97 && 98
然后
97不是0,所以直接转换成_Bool型,1
98不是0,所以直接转换成_Bool型,1
然后
1 && 1
然后
返回 1
printf("true");

jackz007 发表于 2022-10-9 21:43:33

本帖最后由 jackz007 于 2022-10-9 21:48 编辑

      你的理解很对啊,难道还有什么问题?
      逻辑值和 char、int、long long 等一样都是数值型量,只不过逻辑型量只有两个值,0 和 1,只需要一个二进制位就足够了,char 需要 8 个二进制位,int 需要 32 个,long long 需要 64 个,这就是他们最本质的区别。char、int、long long 的 0 值对应于 false,非 0 值对应于 true。

ba21 发表于 2022-10-9 21:44:00

这样是可以的,最终就是 二进制进行操作, 0假,非0真。

zhangjinxuan 发表于 2022-10-15 21:56:57

本帖最后由 zhangjinxuan 于 2022-10-15 21:58 编辑

鱼币!我就玩5次{:10_256:}

zhangjinxuan 发表于 2022-10-15 21:57:32

第2次....

zhangjinxuan 发表于 2022-10-15 21:58:04

第3次....

zhangjinxuan 发表于 2022-10-16 07:38:00

我来学学

kerln888 发表于 2022-10-16 07:52:41

{:10_256:}{:10_256:}{:10_256:}

kkl44stupid 发表于 2022-10-17 22:48:32

{:10_245:}
页: [1]
查看完整版本: 同学们,如何理解?“逻辑运算符两侧运算对象的数据类型可以是任何类型的数据 ...”