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)、MDOに割り当て1
られます。それ以外の場合、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 になります。
つまり、式が true の場合、MDO の値は 1 になり、それ以外の場合は 0 になります。