最近调试代码,发现了如下代码
/* set standard and fast speed deviders for high/low periods */
signalA_falling_time = dev->signalA_falling_time
?:300; /* ns */
signalBl_falling_time = dev->
signalA_falling_time
?: 300; /* ns */
注意红色字体部分,我们传统的 三目运算符,带有3个操作数,a > b ? a : b ,
条件为非0的时候,取a, 0的时候取b.
这里省略了第二个操作数,那么他是怎么运行的呢?
比如 a > b : b, 这句的作用是,如果条件为真,就返回 真, 否则返回b. 这只是举例说明。
很显然,如果要获取a, b的较大的一个,可以这么写, a ?: b。
回到上面的代码,就是如果
dev->signalA_falling_time值非0, 返回这个值,否则用默认值300.
阅读(1283) | 评论(0) | 转发(0) |