加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

|和||的区别,C语言|和||的区别详解

发布时间:2020-12-15 17:34:05 所属栏目:百科 来源:网络整理
导读:在 C 语言中,“||”是 逻辑操作符 (或),它的操作数是布尔型,即只有“0”(表示 false)和“1”(表示 true)两个数值。 C 语言规定,在逻辑运算中,所有非 0 的数值都被看成 1 处理。 而“|”是 位操作符 (或),其操作数是位序列。位序列可以是字符型
在 C 语言中,“||”是逻辑操作符(或),它的操作数是布尔型,即只有“0”(表示 false)和“1”(表示 true)两个数值。C 语言规定,在逻辑运算中,所有非 0 的数值都被看成 1 处理。

而“|”是位操作符(或),其操作数是位序列。位序列可以是字符型、整型与长短整型等(通常情况下选择无符号整型)。在位运算中,相应的位之间进行逻辑运算,因此,从逻辑上讲,位运算过程包含多个逻辑运算过程。

下面通过一个示例来了解两者之间的区别。
#include <stdio.h>
int main (void)
{
    unsigned int x = 0x1101;
    unsigned int y = 0x1100;
    /*逻辑操作*/
    printf("sizeof(x || y): %dn",sizeof(x || y));
    if(x||y)
    {
        printf("x || y : %d(True) n",x||y);
    }
    else
    {
        printf("x || y : %d(False) n",x||y);
    }
    /*位操作*/
    printf("sizeof(x | y): %dn",sizeof(x | y));
    printf("x | y : %x n",x|y);
    return 0;
}
因为变量 x 与变量 y 都不为 0,所以执行语句 if(x||y) 返回 1。而当执行 x|y(即 1101|1100)时,相应的位之间逐一地进行逻辑运算(或),因此所得到的结果为 1101。

程序运行结果为:
sizeof(x || y): 4
x || y : 1(True)
sizeof(x | y): 4
x | y : 1101

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读