读书人

关于c语言里面的逻辑与在对不同大小的

发布时间: 2012-06-15 19:37:05 作者: rapoo

关于c语言里面的逻辑与在对不同大小的整数进行操作时的疑惑
最近在看wrk
其中有一行这样的代码

C/C++ code
#define MI_GENERATE_VALID_WSLE(Wsle)                   \    ((PVOID)(ULONG_PTR)((Wsle)->u1.Long & (~(PAGE_SIZE - 1) | 0x1)))

其中#define PAGE_SIZE 0x1000
首先我想知道page_size 和0x1 是按照双字节存储的么 如果她是按照双字节存储那这两个相或倒能理解
可是这两个或完了之后再跟一个长整型相与得到的是双字节还是四字节的数
希望大家能够解答一下疑惑

[解决办法]
整形数字常量,要是没有标明类型,都是以4字节有符号数储存的

0x1<------------------ int
0x2l<----------------- long
0x2ul<----------------unsigned long

读书人网 >C语言

热点推荐