+ -
当前位置:首页 → 问答吧 → kernel/timer.c 中这个语句什么意思,为什么这样写?

kernel/timer.c 中这个语句什么意思,为什么这样写?

时间:2006-04-19

来源:互联网

* Don't completely fail for HZ > 500. */
int tickadj = 500/HZ ? : 1; /* microsecs */

作者: pangumax   发布时间: 2006-04-19

双目运算符 ?: 是 gcc 对三目运算符 ?: 的一种扩展,
x ?: y
等同于:
x ? x : y

详见 info gcc :: C Extensions :: Conditionals .
这个很有用,在很多情况下可以省掉写一个临时变量,避免同一运算式被求值两次。如当 x 是调用一个函数, x 是一个宏参数时,等等。

作者: crquan   发布时间: 2006-04-24

谢谢啦,得好好看看gcc文档了

作者: pangumax   发布时间: 2006-04-24