if (abs(u) > Vdc)
u = Vdc*((u > 0) - (u < 0));
Run Code Online (Sandbox Code Playgroud)
这个代码在C中,考虑到我们输入if条件会发生什么?Vdc = 24; 考虑任何任意值的u来解释
如果u > 0语句将成为1 - 0(true - false)= 1.如果u < 0它会成为-1.如果它为零,它也将变为零0.所以基本上它正在返回u(或者更确切地说1是相应的符号)的"符号" .整个代码片段用于夹u在+Vdc和之间-Vdc.(按照建议,它只适用于积极的Vdc).
括号中的表达式是符号函数.如果u > 0成立,则表达式变为
(u > 0) - (u < 0) -> 1 - 0 -> 1
Run Code Online (Sandbox Code Playgroud)
因为第一个条件为真,第二个条件为假.同样的u < 0情况.