這時候,我將char name[10]和int card的位置調換,結果用gdb的時候果然在name后面進行了填充,另外,gdb查看內存時要先x/31d 地址,才能x/32d 地址,不然會將多個字節串聯
2018-11-29
我試了一下,我的struct有
int card 4字節,
char name[10],10字節
char school[15],15字節
按理說,name后面你應該填充兩個字節,school填充一個字節,但實際上三個字節都填充再了school后面,這是我用gdb查出來的
int card 4字節,
char name[10],10字節
char school[15],15字節
按理說,name后面你應該填充兩個字節,school填充一個字節,但實際上三個字節都填充再了school后面,這是我用gdb查出來的
2018-11-29
a&1為什么能判斷奇偶性呢。
二進制只有最低位是奇數取值為1,其他位都是偶數(2^0 , 2^1, 2^2,或者你理解8421也可以)。 偶數+偶數=偶數這肯定不需要多說。奇數+偶數=奇數。二進制轉十進制,就是各個取值相加。
所以我們看看1的8位二進制: 0000 0001。
所以當 a&1的時候是 1 表明最低位存在值,也就是1。而其他位置(2,4,8,16,32,64,128) 都是偶數,轉為十進制的時候,其他位數相加都是偶數,如果存在最后一位,也就是要+1,那就會變成奇數,反之還是偶數。
二進制只有最低位是奇數取值為1,其他位都是偶數(2^0 , 2^1, 2^2,或者你理解8421也可以)。 偶數+偶數=偶數這肯定不需要多說。奇數+偶數=奇數。二進制轉十進制,就是各個取值相加。
所以我們看看1的8位二進制: 0000 0001。
所以當 a&1的時候是 1 表明最低位存在值,也就是1。而其他位置(2,4,8,16,32,64,128) 都是偶數,轉為十進制的時候,其他位數相加都是偶數,如果存在最后一位,也就是要+1,那就會變成奇數,反之還是偶數。
2018-11-02