以前上课时我们老师说他只是熟悉C语言算不上精通,我当时就觉得奇怪,老师懂那么多还不算精通?
工作后觉得自己C语言已经比较熟悉,直到阅读linux内核源码才发现,C语言还有很多很多我们不知道的东西,我们离所谓的精通其实还很远。
先从一个我在内核源码我看到的三目运算说起。
当表达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_