首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

为什么定义的宏要用十六进制的值?如何使用的

2012-02-10 
为什么定义的宏要用十六进制的值?怎么使用的?C/C++ code#define GUI_ACTIVE0x00000001L// 活动的#define G

为什么定义的宏要用十六进制的值?怎么使用的?

C/C++ code
#define GUI_ACTIVE            0x00000001L        // 活动的#define GUI_VISIBLE            0x00000002L        // 可见的#define GUI_DRAGABLE            0x00000004L        //#define GUI_ENABLE            0x00000008L        // 可使用的// UI Type define// UI 类型#define GUI_WINDOW            0x00000001L        // 窗体#define GUI_BUTTON            0x00000002L        // 按钮#define GUI_STATIC            0x00000003L        // 静态文本#define GUI_CHECKBOX            0x00000004L        // 复选框#define GUI_RADIOGROUP        0x00000005L        // 单选框#define GUI_SLIDER            0x00000006L        // 滑块#define GUI_SCROLLBAR        0x00000007L        // 滚动条#define GUI_LISTBOX        0x00000008L        // 列表框


直接用10进制123456不就得了,还要用十六进制?

(另外,我不理解位运算,虽然我知道位运算的原理,但不知道其作用,从学C++到现在,就是不会用。)

[解决办法]
windows.Attr=windows.Attr&(~GUI_DRAGABLE);
对GUI_DRAGABLE按位求非,然后和当前值按位与
[解决办法]
16进制转2进制很容易口算

可以直接看到这个数的每个二进制位的值

其实也可以用二进制更直接,不过二进制太长了
[解决办法]
探讨
引用:楼上所有人叽叽歪歪说了这么多,全部都没说到点子上。让我来结贴吧: #define GUI_ACTIVE            0x00000001L        // 活动的 #define GUI_VISIBLE            0x00000002L        // 可见的 #define GUI_DRAGABLE            0x00000004L        // 可拖拽 #define GUI_ENABLE            0x00000008L        // 可使用的 比如你有个窗体,它要活动、可见、可使用,那么怎么设置它的属性? windows.Attr = GUI_ACTIVE | GUI_VISIBLE | GUI_ENABLE; 本来Attr的值是0,现在变成了二进制1011,每个位表示一个属性。明白了吗?这个你用十进制试试看?能实现的这么优雅么? C语言不能使用二进制表示,否则就用二进制了,十六进制是最接近二进制的表示法。
我只想问你一句话, 十进制难道不能进行位运算吗? 同一个二进制数, 用十进制表示和用十六进制表示, 用十进制进行位运行和用十六进制位运算结果有什么本质区别吗?

[解决办法]
探讨
引用:我觉得代码优雅不优雅只是表象, 本质是在没有办法定义二进制数的情况下, 16进制比10进制更"接近"二进制. 所以用16进制表示. 另外Silenker写哒很有"力度"呀

我问你,若现在Attr的值是1111,即活动+可见+可拖拽+可用
怎么运算得到另一种状态?比如我要让他变成:活动+可见+不可拖拽+可用?

热点排行