posts - 18,  comments - 21,  trackbacks - 0
回调是逻辑上最清晰的一种办法了,协程不应该用在这个地方。
和BIG-ENDIAN or LITTLE_ENDIAN有关,推荐少用。
其实也不复杂,只要知道float在内存里是怎么存储的就简单的很了
IEEE:
float:
Sign Exponent Mantissa
1bit 8bits 23bits

实际上float的Mantissa是24位,有一个隐含的最高位,且该位一直为‘1’

Mantissa表示1~2之间的数
Expoent=0x7f表示指数0, Expoent>0x7f为正指数,Expoent<0x7f则为负指数
很邪恶啊,我还是喜欢简单一些的。。。

int fun(int v)
{
int res = 1;
while (res < v)
res <<= 1;

return res;
}
@Kevin Lynx
我想表达的意思只是处理第一个user的时候地址越界,把第二个user的pool置空,这种错误经常发生,比如我就干过这样的。

#define MAX_USERNAME 25

struct cUser
{
char name;
...
};

cUser* user = (cUser*)malloc(sizeof(cUser));
user->name = (char*)malloc(sizeof(MAX_USERNAME));

这样申请第一个user没问题,第二个就报错,调用堆栈不会显示sizeof(MAX_USERNAME)这种低级错误。要跟出来只能靠经验了。

<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用链接

留言簿(2)

随笔分类

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜