c语言if文里null,C语言中if (p==NULL)的是与非
博客园cnblogs不知为何最近开始渐有C语言开发重启的迹象,不少人开始写一些C语言的教程。
其中看到一段有趣的留言,提到这个写法:if (p == NULL),
有人说这是不好的~,经典不提倡的~,会写错出问题的~,华为都禁止的~。
我倒是有些不同的看法。
首先这种写法是有问题,一般来讲对于空指针可以这样写
if ( p )
或者反义是这样 if ( !p )
既简单,还节省字数。
如果是想写的比较容易懂,那么if (p == NULL) 是我提倡的方式。
你可以很简单的读成“如果p等于空值”,反过来的方式NULL==p就有些别扭,不是给人看的。
有人提到p==NULL很容易写成p=NULL,代码出错啦!会有bug啦!
好吧,我承认这是一种可能性,在早期编译器不完善的时候的确如此。那时候还提倡用匈牙利命名法,因为编译器对类型识别支持不好,很容易写出胡乱转型的代码(当然现在的C语言也容易)。但是针对正在使用的编译器以及将来更先进的编译器,在条件判断中使用p==NULL不是问题。
做一个很简单的实验,使用VC2010,项目设置为compile as C,注意关键一点“把warning级别提高到最高级别4”,这时候if (p=NULL )会得到如下警告:
1>purec.cpp(10): warning C4706: assignment within conditional expression
很简单吧,不需要你使用那种反人类常识的代码规范。
使用GCC(v4.5.2 in Ubuntu11.4)也很容易,它有一个编译选项-Wall,警告信息如下:
/home/sun/foobar-sample/main.c:24:2: warning: suggest parentheses around assignment used as truth value
如果工具支持,为何不使用一种更为合乎阅读习惯的方式呢,BTW,我查找了一下经典的K&R,其中==的使用都是我提到的p==0这种方式,其它更为经典的(有么?)我就不知道了。
c语言if文里null,C语言中if (p==NULL)的是与非相关推荐
- c语言if语句知识点总结,c语言中if语句知识点总结.docx
c语言中if语句知识点总结.docx 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3. ...
- c语言eof不起作用,c语言中EOF的用法
c语言中EOF的用法以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! c语言中EOF的用法 1.EOF是end of fi ...
- c语言中变量加1,c语言中,指针加1的情况.指针变量详细介绍
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址. 要搞清一个指针需要搞清指针的四方面的内容: 指针的类型, 指针所指向的 类型, 指针的值或者叫指针所指向的内存区, 还有指针本身所占 ...
- C语言中字母a等于,C语言中’a’和"a"有什么区别?,c语言中“!a"是什么意思啊...
导航:网站首页 > C语言中'a'和"a"有什么区别?,c语言中"!a"是什么意思啊 C语言中'a'和"a"有什么区别?,c语言中"!a"是什么意思啊 匿名网友: 1.本质区 ...
- c语言new的作用,关于c语言中new的使用?
必须使用malloc函数,因为C语言没有new这个操作符,但是如果你的编译器是C++的话,是可以使用new的. 所以程序就是: long *pNumber = (long*)malloc(sizeof ...
- c语言 strcpy原型,浅谈C语言中strcpy,strcmp,strlen,strcat函数原型
实例如下: //strcat(dest,src)把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0' char *strcat(char * strDest, cons ...
- c语言char有什么作用,C语言中char*和char[]用法区别分析
本文实例分析了C语言中char* 和 char []的区别.分享给大家供大家参考之用.具体分析如下: 一般来说,很多人会觉得这两个定义效果一样,其实差别很大.以下是个人的一些看法,有不正确的地方望指正 ...
- c语言char str什意思,C语言中,charstr的str到底表示什么?
问题:C语言中,char str的 str到底表示什么? 描述: #include int main() { #第一处 char *pstr = "abcdef"; printf( ...
- c语言gets和getchar区别,C语言中 gets 和 getchar 有什么区别
C语言中 gets 和 getchar 有什么区别 发布时间:2020-07-22 09:14:29 来源:亿速云 阅读:81 作者:Leah 这期内容当中小编将会给大家带来有关C语言中 gets 和 ...
最新文章
- Travis CI : 最小的分布式系统(二)
- DevExpress的PdfViewer添加工具栏实现PDF打开、预览、保存、打印
- RxJava 设计理念 观察者模式 Observable lambdas MD
- HDU4267(2012年长春站)
- leetcode542. 01 矩阵(bfs/dp)
- tp5 集成支付宝h5支付接口
- 记录——《C Primer Plus (第五版)》第八章编程练习第八题
- java hashMap缓存简单实现
- java 防止sql注入的方法(非原创)
- python基础代码大全-python基础语法,python 代码命令大全
- Adblock Plus无法屏蔽CSDN右下角广告解决
- Atitit 项目源码管理 attilax著 1. 源码结构sdk目录结构	1 1.1. 源码分类,配置文件,主程序文件,sql文件	1 2. 源码管理,提交,更新,与同步	1 2.1. 源码同步
- js写用户名密码错误提示_写给前端的 Jenkins 教程——快速实现前端/ Node.js 项目的 CI/CD...
- jeecg-boot配置菜单
- 单片机c语言论文,c语言数据小论文_c语言论文课题单片机_精通c语言
- 安装包制作工具 SetupFactory 详解
- Qt实现Toast提示消息
- 基于HTML和JS实现的保护海洋动物、保护环境的硬核小游戏
- Gary Marcus:因果熵理论的荒诞和认知科学带给AI的11个启示 | 文末赠书
- 自动爬取微博热门评论和点赞数并存为EXCEL文件(python2)