261

次の行に出くわしました

hsb.s = max != 0 ? 255 * delta / max : 0;

この文脈で?とはどういう意味ですか?:

4

8 に答える 8

375

これは、条件演算子(三項演算子) と呼ばれます。

形式は次のとおりconditionです。value-if-true:を「then」および「else」とvalue-if-false
考えてください。?:

あなたのコードはと同等です

if (max != 0)
  hsb.s = 255 * delta / max;
else
  hsb.s = 0;
于 2009-11-20T16:58:30.227 に答える
40

明確にするために適切に括弧で囲まれています。

hsb.s = (max != 0) ? (255 * delta / max) : 0;

どちらかを返すことを意味します

  • 255*delta/max最大 != 0 の場合
  • 0最大 == 0 の場合
于 2009-11-20T16:57:35.630 に答える
7

これは、次のように括弧を付けて記述すると、おそらく少し明確になります。

hsb.s = (max != 0) ? (255 * delta / max) : 0;

それが行うことは、最初の括弧内の部分を評価することです。結果が true の場合、? の後の部分は : が返される前。false の場合、: に続くものが返されます。

于 2009-11-20T16:58:08.387 に答える
7
hsb.s = max != 0 ? 255 * delta / max : 0;

?三項演算子です。ifと組み合わせてのように機能します:

!=等しくないことを意味します

したがって、この行の長い形式は次のようになります。

if (max != 0) { //if max is not zero
  hsb.s = 255 * delta / max;
} else {
  hsb.s = 0;
}
于 2009-11-20T16:58:52.463 に答える
0

? :これは三項演算子ではありませんか?

var x= expression ? true:false

于 2009-11-20T16:56:29.363 に答える