寻找一些可以在我的C应用程序中重用的代码,我遇到了这个表达式:
MDO = ((output_data & 0x80) ? 1 : 0);
我理解括号之间的内容,但? 1 : 0
是什么意思?
答案 0 :(得分:4)
它是if-else
的简写,称为ternary operator。
在你的情况下它等于:
if (output_data & 0x80) {
MDO = 1;
} else {
MDO = 0;
}
一点建议,不要将它用于复杂的if
构造,它会妨碍可读性。只有在这样的情况下才能使用它,可以立即理解。
答案 1 :(得分:3)
'?'是三元运算符,它是
的简写if ((output_data & 0x80) != 0) { MDO = 1; } else { MDO = 0; }
如果output_data设置了第8位(0x80 = 128 =第8位),则将1
分配给MDO,否则MDO将获得值0
一个更简单的例子:周五有10种啤酒,否则只有2种。
int beers = (day == Friday) ? 10 : 2;
答案 2 :(得分:1)
表示如果表达式为真,则表示MDO的值为1,否则为0
答案 3 :(得分:1)
output_data&安培; 0x80是一个按位二进制和。因此,如果该particalr位在out_putdata上,则返回0x80,否则返回0
MDO =? :
与
相同if (expression)
MDO = 1
else
MDO = 0
因此如果output_data上的位打开,则MDO将为1,否则为0