ある本の中で、私は三項演算子の使用法のあいまいな(私にとって)構文を見ました:
int nr = nr ? : 1; /* allowed shortcut, same as "nr ? nr : 1" */
これは正確にはどういう意味ですか?コードのどこかで「nr」変数が宣言されており、その初期値は、「nr」(内部にジャンクがあると思いますが、O_o)がゼロに等しくないかどうかの比較結果に基づいています...それはどのような価値を得るでしょうか?
ある本の中で、私は三項演算子の使用法のあいまいな(私にとって)構文を見ました:
int nr = nr ? : 1; /* allowed shortcut, same as "nr ? nr : 1" */
これは正確にはどういう意味ですか?コードのどこかで「nr」変数が宣言されており、その初期値は、「nr」(内部にジャンクがあると思いますが、O_o)がゼロに等しくないかどうかの比較結果に基づいています...それはどのような価値を得るでしょうか?
これは、コメントに記載されているように、2 番目のオペランドを省略できるようにする ternaray 演算子の拡張です。
これ:
int nr = nr ? : 1;
以下と同等です。
int nr = nr ? nr : 1;
これは GCC 固有の拡張機能だと思います。GCC 拡張機能のページはこちらです。
他の人がコメントで指摘しているように、nr
が宣言されており、その値が宣言で使用されているため、この行の結果は予測できません。