1

重複の可能性:
「真の」条件に値を割り当てずに三項演算子を使用するのはなぜですか(x = x?:1)

ある本の中で、私は三項演算子の使用法のあいまいな(私にとって)構文を見ました:

int nr = nr ? : 1; /* allowed shortcut, same as "nr ? nr : 1" */

これは正確にはどういう意味ですか?コードのどこかで「nr」変数が宣言されており、その初期値は、「nr」(内部にジャンクがあると思いますが、O_o)がゼロに等しくないかどうかの比較結果に基づいています...それはどのような価値を得るでしょうか?

4

1 に答える 1

2

これは、コメントに記載されているように、2 番目のオペランドを省略できるようにする ternaray 演算子の拡張です。

これ:

int nr = nr ? : 1;

以下と同等です。

int nr = nr ? nr : 1;

これは GCC 固有の拡張機能だと思います。GCC 拡張機能のページはこちらです

他の人がコメントで指摘しているように、nrが宣言されており、その値が宣言で使用されているため、この行の結果は予測できません。

于 2012-10-11T21:08:40.250 に答える