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