0x3f3f3f3f,0x7fffffff 用于赋值

1. memset函数

memset函数是按字节进行赋值的,经常用于赋值0或者-1, 但正规的用法应该是用于char数组的, 即只能赋值为0x00到0xFF, 例如memset(,0xff,sizeof())时,0xff转为二进制11111111,int为4字节所以最后为11111111111111111111111111111111为-1。(化为二进制补位,然后再赋值)。
能够赋值0, -1的原因是:0的二进制位000000000000000000000000000000000,-1的二进制就是11111111111111111111111111111111,所以memset可以直接初始化0, -1

2. 用memset函数初始无穷大

int类型最大数为0x7fffffff
memset(num,0x7F,sizeof(num)); //它将num中的值全部赋为2139062143,这是用memset对int赋值所能达到的最大值
但图论需要一个无穷大加一个有穷的数依然是无穷大的数, 此时不能取0x7fffffff, 因为此时两数相加会得到一个很小的数
0x3f3f3f3f 是一个非常合适的数, 他满足无穷大加一个有穷的数依然是无穷大的数这个要求, 0x3f3f3f3f的十进制是1061109567,也就是10^9级别的也满足了对无穷大的需求
设置的时候只需要memset(num,0x3f,sizeof(num))

3. 总结

1. 0x7fffffff :int的最大值, 0x7 后跟7个f,memset (num,0x7f,sizeof(num));
2. 0x3f3f3f3f, 1061109567, 0x后跟4个3f, memset(num,0x3f,sizeof(num))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值