【发布时间】:2015-06-13 20:51:29
【问题描述】:
if (abs(u) > Vdc)
u = Vdc*((u > 0) - (u < 0));
这段代码在 C 中 考虑到我们进入 if 条件会发生什么? 直流电压 = 24; 考虑 u 的任意值来解释
【问题讨论】:
-
这是从 bool 到整数的隐式类型转换。您会看到,您将始终为正值,并且可能大于 Vdc。 U 最终等于 Vdc * (1 (true) - 0))。实际上,它是 u = Vdc 的简写版本。
-
@Poriferous 这不是真的。 u 可以是负数(假设它被声明为有符号整数)。
-
当然
u最好是int或更窄的有符号整数,否则返回int的abs(u)是个问题。u == INT_MIN是个问题。使用if (u > Vdc) u == Vdc else if (u < -Vdc) u = -Vdc;的代码会更清晰 - 也许没有那么快。 -
abs(u) 意味着你永远是积极的;这是绝对值。因此,if 语句始终为真。因为 u 始终大于 0(始终为正),所以它始终为 1。然而这不是 u