《编写高质量代码:改善c程序代码的125个建议》——建议15-3:避免“&”与“&&”混淆

简介:

本节书摘来自华章计算机《编写高质量代码:改善c程序代码的125个建议》一书中的第2章,建议15-3,作者:马 伟 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

建议15-3:避免“&”与“&&”混淆

同建议15-2相似,“&&”是逻辑操作符(与),它的操作数是布尔型;而“&”是位操作符(与),其操作数是位序列。它们之间的区别如代码清单2-6所示。

代码清单2-6 “&”与“&&”运算符操作示例
#include <stdio.h>
int main (void)
{
    unsigned int x = 0x1101; 
    unsigned int y = 0x1100; 
    /*逻辑操作*/
    printf("sizeof(x && y): %d\n", 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): %d\n", sizeof(x & y)); 
    printf("x & y : %x \n", x&y); 
    return 0;
}

在代码清单2-6中,因为变量x与变量y都不为0,所以执行语句“if(x&&y)”时返回1。而当执行“x&y”(即1101&1100)时,相应的位之间逐一进行逻辑运算(与),因此所得到的结果为1100。代码清单2-6的执行结果如图2-6所示。


bf6dffad985e8b03a221d77af0610257b61bf906
相关文章
|
存储 C语言
《编写高质量代码:改善c程序代码的125个建议》—— 导读
众所周知,C语言是一门既具有高级语言特点,又有汇编语言特点的通用计算机编程语言,无论是操作系统(如Microsoft Windows、Mac OS X、Linux和UNIX等)、嵌入式系统与普通应用软件,还是目前流行的移动智能设备开发,随处都可以看见它依然矫健的身影。
1768 0