这个代码块在做什么?(u> 0) - (u <0)

Dhr*_*ruv 4 c ansi-c

if (abs(u) > Vdc)
    u = Vdc*((u > 0) - (u < 0));
Run Code Online (Sandbox Code Playgroud)

这个代码在C中,考虑到我们输入if条件会发生什么?Vdc = 24; 考虑任何任意值的u来解释

Eug*_*Sh. 7

如果u > 0语句将成为1 - 0(true - false)= 1.如果u < 0它会成为-1.如果它为零,它也将变为零0.所以基本上它正在返回u(或者更确切地说1是相应的符号)的"符号" .整个代码片段用于夹u+Vdc和之间-Vdc.(按照建议,它只适用于积极的Vdc).


VHa*_*sop 5

括号中的表达式是符号函数.如果u > 0成立,则表达式变为

(u > 0) - (u < 0) -> 1 - 0 -> 1
Run Code Online (Sandbox Code Playgroud)

因为第一个条件为真,第二个条件为假.同样的u < 0情况.