如果声明输出使用|操作者

时间:2017-11-11 16:03:59

标签: c

我需要知道if语句的输出如何根据以下代码计算为true或false:

#include <stdio.h>

enum designFlags {
    BOLD = 8,
    ITALICS = 9,
    UNDERLINE = 4
};

int main() {

    int myDesign = BOLD & ITALICS;
    printf("%d", myDesign);

    if(BOLD & ITALICS)
       printf("Design is ITALIC");
    else
       printf("Design is not ITALIC");

    return 0;
}

2 个答案:

答案 0 :(得分:0)

根据标准§6.8.4.1

  

如果表达式比较不等,则执行第一个子语句   在else表单中,如果是,则执行第二个子语句   表达式比较等于0。

这里的结果是8非零,所以if语句被执行。

在这两个枚举值之间应用按位and运算符,结果值为8.

bitwise这个名字给出了它的工作原理的足够提示。您记下二进制文件并逐位执行and操作。

按照标准,§6.5.10

  

二进制&运算符的结果是。的按位AND   操作数(即,当且仅当每个位时,结果中的每个位都被设置   转换后的操作数中的相应位的设置)。

答案 1 :(得分:0)

首先浏览运营商的任何C书。

if(BOLD&amp; ITALICS)

'&安培;'它是一个按位和运算符。即它在位上运行

require_once __DIR__ . '/vendor/autoload.php';

因此,如果(8)表示真实,那么“设计是斜体”就会被打印出来。