if (abs(u) > Vdc)
u = Vdc*((u > 0) - (u < 0));
このコードは、if 条件に入るとどうなるかを考慮して C で書かれています。Vdc = 24; 説明のために u の任意の値を考慮する
これは関数をモデル化する手法です
|0, if u = 0
f= |1, if u > 0
|-1, if u < 0
この比較を行うためにif句を使用することを避け、そのように評価します
//For positive values of u
(u>0) - (u<0) = 1 - 0 = 1
//For negative values of u
(u>0) - (u<0) = 0 - 1 = -1
//For u = 0
(u>0) - (u<0) = 0 - 0 = 0
これは数学関数です符号 はその値です
これがどのように機能するかです:
C 標準セクション 6.5.8 関係演算子による
指定されたリレーションが true の場合は 1 を返し、false の場合は 0 を返します。結果は int 型です。
u が 0 より大きい場合u > 0
は 1 をu < 0
返し、0を返します。1-0
は 1 です。たとえば、u
0 より大きいものは 1 に変換されます。同様に、u
0 より小さいものはすべて -1 に変換されます。