我需要知道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;
}
答案 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)表示真实,那么“设计是斜体”就会被打印出来。