栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C/C++无穷大的表示 0x7fffffff + 0x7fffffff= 负数

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C/C++无穷大的表示 0x7fffffff + 0x7fffffff= 负数

C/C++中无穷大的表示 1. 用0x3f3f3f3f(十进制:1061109567)表示无穷大

原因:
  1、0x3f3f3f3f和0x7fffffff(十进制:2147483647)一样都是10的9次方级别,足够大,几乎满足所有情况的需求
  2、0x3f3f3f3f符合:无穷大 + 无穷大 = 无穷大的原则(0x77777777 + 0x77777777 = 负数)
  3、初始化数组元素为无穷大时可以使用memset函数,更加方便(这需要了解memset函数的原理)

  memset函数用于字符串的初始化,char类型占一个字节,所以在使用memset函数初始化字符串时,是一个字节一个字节初始化的。虽然该函数也能用于int数组的初始化,但int占4个字节,memset函数会向每个int型变量的每个字节写入相同的值。所以要把数组初始化成0x7fffffff需要循环赋值。而0x3f3f3f3f的每个字节都是0x3f,可以直接用memset初始化,很方便。

memset(a,0x3f,sizeof(a)) //把一段内存置于无穷大
2. 0x7fffffff + 0x7fffffff = 负数

   0x7fffffff是32位int型的最大值,符号位为0,其他的都是1。但这个值在相加时会溢出,这样两个无穷大数相加会变成负数。

注:   使用memset一般只用来初始化0、-1、0x3f这几个数字,其他值需要使用循环初始化。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/588718.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号