用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?


Posted in 面试题 onJanuary 05, 2014
当C 在表达式中要求布尔值时, 如果表达式等于0 则认为该值为假, 否则为真。换言之, 只要写出
if(expr)
无论“expr” 是任何表达式, 编译器本质上都会把它当if((expr) != 0)处理。
如果用指针p 代替“expr” 则if(p) 等价于if(p != 0)。
而这是一个比较上下文, 因此编译器可以看出0 实际上是一个空指针常数, 并使用正确的空指针值。这里没有任何欺骗; 编译器就是这样工作的, 并为、二者生成完全一样的代码。空指针的内部表达无关紧要。
布尔否操作符! 可如下描述:
!expr 本质上等价于(expr)?0:1
或等价于((expr) == 0)
从而得出结论
if(!p) 等价于if(p == 0)
类似if(p) 这样的“缩写”, 尽管完全合法, 但被一些人认为是不好的风格

Tags in this post...

面试题 相关文章推荐
PHP中如何创建和修改数组
May 02 面试题
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
Oct 03 面试题
试解释COMMIT操作和ROLLBACK操作的语义
Jul 25 面试题
.net开发工程师面试题
Feb 25 面试题
北京泡泡网网络有限公司.net面试题
Jul 17 面试题
什么是网络协议
Apr 07 面试题
C#如何调用Windows程序打开一个文档
Dec 26 面试题
什么是设计模式
Jun 17 面试题
设计模式的基本要素是什么
Apr 21 面试题
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
Jul 24 面试题
为什么说Ruby是一种真正的面向对象程序设计语言
Oct 30 面试题
JAVA软件工程师测试题
Jul 25 面试题
struct和class的区别
Nov 20 #面试题
利用指针变量实现队列的入队操作
Apr 07 #面试题
怎样在程序里获得一个空指针
Jan 24 #面试题
描述内存分配方式以及它们的区别
Oct 15 #面试题
定义一结构体数组表示分数,并求两个分数相加之和
Jun 11 #面试题
空指针到底是什么
Aug 07 #面试题
C++是不是类型安全的
Feb 18 #面试题
You might like
删除无限级目录与文件代码共享
2006/07/12 PHP
Apache2 httpd.conf 中文版
2006/11/17 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
javascript encodeURI和encodeURIComponent的比较
2010/04/03 Javascript
js在数组中删除重复的元素自保留一个(两种实现思路)
2014/08/22 Javascript
jquery中attr和prop的区别分析
2015/03/16 Javascript
基于Css3和JQuery实现打字机效果
2015/08/11 Javascript
JavaScript 继承详解(六)
2016/10/11 Javascript
ajax图片上传,图片异步上传,更新实例
2016/12/30 Javascript
js技巧之十几行的代码实现vue.watch代码
2018/06/09 Javascript
通过layer实现可输入的模态框的例子
2019/09/27 Javascript
js实现小时钟效果
2020/03/25 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
2020/05/09 Javascript
[57:38]2018DOTA2亚洲邀请赛3月30日 小组赛A组 OpTic VS OG
2018/03/31 DOTA
[26:50]2018完美盛典DOTA2表演赛
2018/12/17 DOTA
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
浅述python2与python3的简单区别
2018/09/19 Python
python定时按日期备份MySQL数据并压缩
2019/04/19 Python
Python+PyQt5实现美剧爬虫可视工具的方法
2019/04/25 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
2019/06/10 Python
Pytorch 之修改Tensor部分值方式
2019/12/27 Python
Python3创建Django项目的几种方法(3种)
2020/06/03 Python
python使用ctypes库调用DLL动态链接库
2020/10/22 Python
Sentry错误日志监控使用方法解析
2020/11/12 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
2021/02/20 Python
英国最大的在线照明商店:Litecraft
2020/08/31 全球购物
extern是什么意思
2016/03/10 面试题
最新大学毕业求职简历的自我评价
2013/10/18 职场文书
妇科医生自荐信
2013/11/05 职场文书
职业生涯规划设计步骤
2014/01/12 职场文书
招聘专员岗位职责
2014/03/07 职场文书
十八届三中全会感言
2014/03/10 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
2015年复活节活动总结
2015/02/27 职场文书