Windows 系统常变量 赋值的一个规则 位与 加运算 异同
来源:互联网 发布:java线程池并发 编辑:程序博客网 时间:2024/06/09 17:36
经常会有学弟问我,在API编程的时候,很多时候windows.h里或者其他库里的常数系统变量的“ 位或 |”运算和 “算术运算 +”是没有区别的。而我们知道 | 和+还是有区别的。
比如 MessageBox(NULL,"``","caption",MB_OK+MB_ICONERROR);
和 MessageBox(NULL,"``","caption",MB_OK | MB_ICONERROR);
都是正确的。
GetWindowLong(Handle,GWL_EXSTYLE)|WS_EX_LAYERED
写成
GetWindowLong(Handle,GWL_EXSTYLE)+WS_EX_LAYERED
也是正确的。
这是因为M$在命名常数变量是是按二进制位赋值的。
比如举个例子,假如有个函数的某个形参的可能取值为16个。
一般我们的想法是指定整数0~15(十进制);
但是M$会这样指定:(16位二进制)
0000 0000 0000 0001
0000 0000 0000 0010
0000 0000 0000 0100
0000 0000 0000 1000
...
...
1000 0000 0000 0000
这样指定的好处就是,|和+运算都一样。给人一种组合感。
基于这样的基础上,还会有其他常量的定义。比如,你形参是:
1000 0000 0000 0001(二进制)
那么系统马上会知道,既含有0000 0000 0000 0001属性。
又含有1000 0000 0000 0000属性了。
这给编程记忆带来了不少好处。
- Windows 系统常变量 赋值的一个规则 位与 加运算 异同
- 赋值运算与位运算
- JS程序设计基础:变量,算术、关系、赋值、复合赋值、逻辑、位运算符与表达式
- 指针变量的加运算
- 时间类的加、减法赋值运算
- 常量变量运算符与位运算
- Shell学习笔记---变量赋值与运算
- JavaScript将函数名赋值给变量与函数名加括号赋值给变量的区别
- “只用赋值、加1、循环三个操作实现一个减1的运算。
- 只用赋值、加1、循环三个操作实现一个减1的运算
- 只用赋值、加1、循环三个操作实现一个减1的运算
- windows系统下绿色版tomcat加内存方法(32位操作系统与64位操作系统)
- 通过位运算实现两个整数加、减、乘、除以及两个变量的交换
- makefile 变量赋值规则
- Ubuntu 和 Windows 的 PATH 变量异同
- 按位运算与逻辑运算异同点是什么?
- 规则系统与工作流产品的异同- (转 intelligence 产品论坛)(转载)
- bool型变量的赋值和运算
- MTK6253地址空间
- 关于SET QUOTED_IDENTIFIER {ON|OFF}的问题
- .Net 2.0对文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)
- 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之100——BREW中绚丽多彩的应用
- attributes of senior engineer and expert engineer
- Windows 系统常变量 赋值的一个规则 位与 加运算 异同
- 感悟继承
- 使用hh.exe反编译chm文件
- HTML meta的使用和属性
- 在asp.net中是用伪静态---修改webconfig配置文件
- 复杂度估算
- Java实现两个字符串的比较
- 让cmd命令帮你打开开发工具
- 使用Win32::OLE操作Excel——Excel对象模型