"?:" 运算符?

xiaoqiao_82 2013-06-19 10:55:07
在看SLES10 SP4的源代码时,看到这样一行

printk(KERN_ERR "name[%d] = %p = %s\n", i,
context->names[i].name,
context->names[i].name ?: "(null)");


这里面 "?:" 为什么可以这样用? 在GNU C上都可以这样用吗?
...全文
83 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoqiao_82 2013-06-19
  • 打赏
  • 举报
回复
晓得了,谢谢!
zhxianbin 2013-06-19
  • 打赏
  • 举报
回复
?: 的一般形式为 <表达式1> ? <表达式2> : <表达式3> GNU 允许C 语言省略条件表达式中的表达式2省略, 此时表示表达式2与表达式1相同.例如 a = x ? : y; 等价于 a = x ? x : y;

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧