大佬教程收集整理的这篇文章主要介绍了为什么linux内核使用双逻辑否定而不是强制转换为bools?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
int y = !!x;
这就是我认为它发生的事情:x被隐式地转换为bool并且执行第一个否定,之后进行最后的否定,所以是一个演员和两个否定.
我的问题是,不仅仅是使用bool(执行int y =(bool)x;而不是使用int y = !! X)比使用双重否定更快,因为你要保存两个否定执行.
我可能错了,因为我在Linux内核中看到了很多双重否定,但我不明白我的直觉出了什么问题,也许你可以帮助我.
附录:根据C89 draft standard,section 3.3.3.3:
因此,尽管在Linux OS的早期阶段没有布尔类型,但是双重否定将产生0或1(由于Gox指出这一点),这取决于表达式的真实性.换句话说,INT_MIN ..- 1和1..INT_MAX范围内的任何位模式都将产生1,并且零位模式是不言自明的.
以上是大佬教程为你收集整理的为什么linux内核使用双逻辑否定而不是强制转换为bools?全部内容,希望文章能够帮你解决为什么linux内核使用双逻辑否定而不是强制转换为bools?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。