回調是邏輯上最清晰的一種辦法了,協程不應該用在這個地方。
和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;
}
re: 本次服務端搬平臺的一些體會。 大日如來 2008-04-09 22:51
@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)這種低級錯誤。要跟出來只能靠經驗了。