龙空技术网

C语言中计算机觉得-2大于1?不是算错而是你忽视了这些知识

C语言基础 269

前言:

今天朋友们对“c语言中补码是什么”大约比较讲究,各位老铁们都需要知道一些“c语言中补码是什么”的相关内容。那么小编在网络上汇集了一些有关“c语言中补码是什么””的相关知识,希望兄弟们能喜欢,兄弟们一起来了解一下吧!

前言

本文主要介绍的是C语言类型转换的一道题,这是笔试题中的一道比较简单的的题目,希望对于广大读者学习C语言有一些帮助。深入了解C语言小知识,以下程序的打印结果是?

运行结果

看到这里是不是有很多黑人问题号呀?第一次接触到这个问题的时候是不是都怀疑人生了,这C也太坑了,一言不合就把你给弄得团团转。

解析知识:数据类型一致性原则

C语言当中,很多运算,都需要保持数据的类型一致性,故我把这一行为称之为数据类型一致性原则,例如:赋值运算的时候 int a=1.11 ;根据结合性来讲,从右往左,数据类型一致性原则,1.11 会自动转换为int类型 故 a最终的值是1。而对于数据类型一致性原则中一般都遵循以下类型转换原则:数据都是优先转化为长数据类型,浮点与整形优先转化为浮点运算,无符号与有符号优先转化为无符号。

解析知识:数据溢出环形处理法

这里我以char和unsigned char类型来进行说明,对于其他整形数据同样分析即可,首先我们来看看使用补码以后的数据表示范围问题,目前最经典的图形表示方法就是采用环形表示,如下图:

这样表示的好处是,一旦数据溢出,直接顺着变化的方向即可找到对应的值。这里也贴出实验的代码如下:

最终输出的结果与我们的环形结构是相符合的,结果如下:

我们可以得出结论:相反数直接关于环形对称。同样其他的数据类型也是同样的性质,仅仅只是数据范围变大了。了解数据转化概念以及数据溢出这两点的小伙伴应该都知道,该程序并不会输出我们常规的-2 < 1,而是输出-2 > 1这个结果。

尾言

文章都是手打原创,每天最浅显的介绍C语言、C++,windows知识,喜欢我的文章就关注一波吧,每天带你学习C/C++不同的知识,也可以看到最新更新和之前发表的文章哦。如果足下基础比较差,不妨关注下人人都可以学习的视频教程

《C语言51课视频教程合集》

《C++45课视频教程》

通俗易懂,深入浅出,一个视频只讲一个知识点。视频不深奥,不需要钻研,在公交、在地铁、在厕所都可以观看,随时随地涨姿势

如果今天学到知识的,可以在留言区留言学到了哦,如果喜欢的可以评论,转发,收藏哦,这真的对我很重要!!

标签: #c语言中补码是什么