ACM关于C/C++中的memset初始化与无穷大的定义
答案:1 悬赏:60 手机版
解决时间 2021-01-26 16:06
- 提问者网友:我们很暧昧
- 2021-01-26 09:28
ACM关于C/C++中的memset初始化与无穷大的定义
最佳答案
- 五星知识达人网友:冷風如刀
- 2021-01-26 09:35
memset 是按照“字节”来设的,所以 memset(, 0x1f, ),相当于把每个字节都设置成1f,对于四个字节的整数来说,就把每个字节都变成1f,所以最终这个整数就是 0x1f1f1f1f,也就是无穷大。
而你定义 INF=99999999,这是10进制的,对应16进制是0x5f5e0ff你memset(,INF,)时,会转换成字符型的,也就象当与强制转换成了0xff,所以你memset(,INF,)相当于memset(,0xff,),这样这个整数就是 0xffffffff,当然和你的99999999不是同一个数字了。
解决方法,比如你可以把 INF定义成 0x59595959,初始化用memset(,0x59,),应该是没问题的。明白了吧?
而你定义 INF=99999999,这是10进制的,对应16进制是0x5f5e0ff你memset(,INF,)时,会转换成字符型的,也就象当与强制转换成了0xff,所以你memset(,INF,)相当于memset(,0xff,),这样这个整数就是 0xffffffff,当然和你的99999999不是同一个数字了。
解决方法,比如你可以把 INF定义成 0x59595959,初始化用memset(,0x59,),应该是没问题的。明白了吧?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯