1

ternary operator主に inについて少し疑問に思ってC++いますが、他の言語にも当てはまると思います。

私が抱えている問題の最も良い例 (または問題と呼ぶべきですか? 概念的な問題だと思います) は、値のクランプです

float clamped = (x<0.3) : 0.3 ? x;

私はこのコードを書きたいと思ってxいますが、次のようなものがあると複雑になるかもしれません:

float clamped = (1.f - x + my_function()) > .2f ? .2f : (1.f - x + my_function());

これは私の意見では手に負えないところです。私はそれを書き直します:

float clamped = (1.f - x + my_function());
if (clamped > .2f)
    clamped = .2f;

したがって、これは実際に最大2つの質問につながります

1: デフォルトの動作があるので、「true の場合はこれを実行し、それ以外の場合は、それが言ったことを実行する」と言うことができます。次のような疑似コードで:float clamped = (1.f - x + my_function()) > .2f : .2f ? **default**;

2: それでも最初の方法で行う場合、最初に条件を評価し、そうである場合falseは別の評価を行って から値を取得します(1.f - x + my_function())か?

それのいくつかが理にかなっていることを願っています、それは私が今まで理解できなかったものです.

4

2 に答える 2

5

これには max 関数を使用できます。

float clamped = max(1.f - x + my_function(), .2f);
于 2014-01-23T11:16:27.583 に答える