第一句子大全,网罗天下好句子,好文章尽在本站!

详细探讨C语言中各种数据类型与“0”的比较

时间:2017-10-03

一般我们用if语句判断一个条件是真的还是假,我们直接使用ifvar或者if!var表示这是逻辑判断真还是假,如果我们用if判断一个数值如short 、int 、long

友情提示:本文共有 437 个字,阅读大概需要 1 分钟。

前言

我们学习C语言的时候在条件分支判断if语句的时候总会涉及到很多的比较,判断条件是否为真,很多时候我们是直接与0进行比较,今天我想讲一下关于各种数据类型和0比较的的注意事项,我们的基本数据类型包括(int char bool float指针等变量)。

一般我们用if语句判断一个条件是真的还是假,我们直接使用if(var)或者if(!var)表示这是逻辑判断真还是假,如果我们用if判断一个数值如(short 、int 、long等),这时候我们就应该用if(var == 0)表示是与0进行数据值的判断,对于指针来说,我们最好是使用if(var == NULL),最后值得注意的一点是我们的浮点型,因为我们的浮点型在存储的时候受精度影响你并不知道它的值比如你 float a=1;它在内存中可能是 1.00000241,和我们系统的精度有关系,并不是一个精确的数。所以在比较或者是判断我们浮点数的时候我们就需要把(==)、(!=)换成(>=)、(<=)的形式。

int类型数据和0比较

整型数据的比较是相对简单不复杂的我们上面讲到的确定数值的时候我们用(==)和(!=)例如:

if(a == 0)或者 if(a != 0)

不建议写成:if(a)或者if(!a),因为你这样写会让读你代码的人以为你的a是一个bool值。

在这里想说一下我们代码的规范和可读性性问题,一般我们的符号和变量或者表达式之间有一个空格会让你的代码有更高的可读性,当然如果不加影响也不是很大,看自己个人的编程习惯吧,我个人平时写普通测试代码的时候是不习惯加的但是,写一些比较正式的代码的时候还是会乖乖加上。

float类型与0比较

float类型。不管是单精度还是双精度类型。由于在存储的时候并不是具体的,会和存入的数据有偏差,在计算机当中,大多数浮点数据都是无法精确的去表达的。我们应该定义一个范围然后使用(>=)、(<=)来判断比如:

const float N=0.0001;

if( (a>=N) && (a<=N)

不建议写成:

if(a == 0)或者 if(a != 0)

有时候你写成下面的格式也没什么问题,但是你要记住的是浮点数的精度误差,如果在系统精度很高的机器中你的代码可能就存在判断错误的情况了,所以我们还是尽可能养成一个良好的代码编写规范。

bool类型与0比较

建议写成:if(a)或者 if(!a)

不推荐写成下面的几种形式:

1、if(a ==TRUE)

2、if(a == FALSE)

3、if(a == 1)

4、if(a == 0)

指针类型与0比较

指针类型建议是和NULL比较而不是0

建议写成:

if(p == NULL) 或者 if(p != NULL)

不建议写成:

if(p == 0) 或者if(p != 0),这样会让人误解是整型变量。

if(p)或者if(!p),这样的代码可能会使读者误认为是bool 类型。

总结

在比较的代码中需要注意的是我们很多刚刚编写代码的时候经常会把我们的“=”和“==”混淆起来,这也不奇怪,因为我们计算机中"="是赋值的意思,双等号“==”才表示比较是否相等,我自己在刚刚接触的时候是栽过跟头的,经常把 if(c==0)写成if(c=0),在这里提示一下各位伙伴要注意哦。

本文如果对你有帮助,请点赞收藏《详细探讨C语言中各种数据类型与“0”的比较》,同时在此感谢原作者。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
NLTK框架API:丰富语言资源的可发现性设计

NLTK框架API:丰富语言资源的可发现性设计

...b.org/anthology/D/D17/D17-2001.pdf留言 点赞 发个朋友圈我们一起探讨AI落地的最后一公里

2023-05-14 #经典句子

SQL数据库及SQL语言是什么?

SQL数据库及SQL语言是什么?

本文将着重针对MySQL数据库的基础知识以及操作进行详细的介绍。数据库是什么?之前小编在这个问题上详细讲述过(详见《数据库》),和现实生活中的各类仓库一样,数据库就是网络上用来存放数据的地方,用户可以对这些...

2023-05-08 #经典句子

C语言的简单了解及学习2

C语言的简单了解及学习2

...举常量。关于这些基本的数据类型我们将在下一小节进行详细的讲解。常量就像是常规的变量,只不过常量的值在定义后不能进行修改。整数常量整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示...

2007-06-12 #经典句子

令小白头痛的C语言 到底该怎么学?

令小白头痛的C语言 到底该怎么学?

...不能挂科,那么我们应该怎么学呢?下面将从两个角度来探讨C语言的学习。一、应试角度毫无疑问,C语言本身是一门必修课,这意味着它具有课程的共性,即知识存在基础知识、重点知识和难点知识等。注意,C语言的基础知识...

2007-11-15 #经典句子

C语言的int整型你真的都掌握了吗?帮你梳理一下它的知识点

C语言的int整型你真的都掌握了吗?帮你梳理一下它的知识点

...示正数或负数定义方式:以上就是C语言中的整型int比较详细的知识点梳理,希望能帮助到大家。持续分享嵌入式知识中,感兴趣的朋友可关注~

2011-09-28 #经典句子

面向对象的语言

面向对象的语言

...员以优雅的思维方式进行复杂的编程。2、其次,再给你详细一些的说明两者的区别:Java没有预处理指令。(如C中的#define , #include , #ifdef等)。C中的常量定义在Java中用static final来取代。Java中没有C中的全局变量。Java中的主类型...

2017-07-18 #经典句子

“语言学及应用语言学名著译丛”出版座谈会暨“汉译世界学术名著丛书”第二十辑语言类

“语言学及应用语言学名著译丛”出版座谈会暨“汉译世界学术名著丛书”第二十辑语言类

...的动态过程。作者提纲挈领地提出语言新论,开门见山地探讨语法的本质问题,将变异性和递差性统筹兼顾,以作用于语言使用行为的复现过程为切入点寻求解释。其论据涵盖基于大型口笔语语料库的研究发现、语言变迁的相关...

2023-07-23 #经典句子

40种语言 9项推理任务 谷歌发布新的NLP基准测试XTREME

40种语言 9项推理任务 谷歌发布新的NLP基准测试XTREME

...和目标语言中是否会犯同样类型的错误。更为具体一些是探讨了英语中正确和错误预测的例子是否在其他语言中被正确预测。结果是在XNLI和XQuAD数据集上有不同答案。推广到不可见的标签组合和实体:这部分主要分析了结构化预...

2023-05-18 #经典句子