细数linux内核里那些偏门的C语言语法(一)简化三目运算

 
 以前上课时我们老师说他只是熟悉C语言算不上精通,我当时就觉得奇怪,老师懂那么多还不算精通?
工作后觉得自己C语言已经比较熟悉,直到阅读linux内核源码才发现,C语言还有很多很多我们不知道的东西,我们离所谓的精通其实还很远。
 
先从一个我在内核源码我看到的三目运算说起。
 
这里先简单介绍一下三目运算,就是  表达式1 ? 表达式2 : 表达式3

当表达1结果非0时,程序会执行表达式2,结果为表达式2的执行结果

当表达1f结果为0时,程序会执行表达式3,结果也为表达式3的执行结果

 

比如

 

int a = 3;

int b;

b = a? 2 : 6;

如果a为0,b 结果为6,其余结果为2。

 

 

近来在弄linux驱动的GpioKey,在跟static int __devinit gpio_keys_probe(structplatform_device *pdev)  时发现,有一段代码如下:

 

unsignedint type = button->type ?: EV_

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值