在我的 C 应用程序中寻找一些要重用的代码时,我遇到了这个表达式:
MDO = ((output_data & 0x80) ? 1 : 0);
我明白括号之间的内容是什么,但这是什么? 1 : 0
意思?
在我的 C 应用程序中寻找一些要重用的代码时,我遇到了这个表达式:
MDO = ((output_data & 0x80) ? 1 : 0);
我明白括号之间的内容是什么,但这是什么? 1 : 0
意思?
它的简写if-else
,称为三元运算符。
在您的情况下,它等于:
if (output_data & 0x80) {
MDO = 1;
} else {
MDO = 0;
}
还有一点建议,不要将它用于复杂的if
构造,它会妨碍可读性。只在这样的情况下使用它,它可以立即被理解。
“?” 是三元运算符,它是
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;
这意味着如果表达式为真,则 MDO 的值为 1,否则为 0
output_data& 0x80 是按位二进制与。因此,如果该特定位在 out_putdata 上,则返回 0x80,否则返回 0
MDO= ? :
是相同的
if (expression)
MDO = 1
else
MDO = 0
因此,如果 output_data 上的位打开,则 MDO 将为 1,否则为 0