星期六, 四月 12, 2008

枚举值赋值:assign enum type

枚举值在编译器或者解释器中大多会被转为基本类型,如int型
在枚举值设置后,最多的操作莫过于比较,类似于

if (arg == Enum_Type_1) {
/* do something */
}

这样的代码。而枚举值默认赋值大多为顺序的,以C语言为例。

Enum_Type_1 1
Enum_Type_2 2
Enum_Type_3 3
Enum_Type_4 4
Enum_Type_5 5
......

(这里只是一个例子,真正的C语言是从0开始赋值的)由于计算机是二进制机器,要让代码跑的快点就要符合它的脾气,即充分考虑二进制数据的存储形式,我们将枚举值赋值为二进制更加容易识别和计算的形式。

Enum_Type_1 1 00000001
Enum_Type_2 2 00000010
Enum_Type_3 4 00000100
Enum_Type_4 8 00001000
Enum_Type_5 16 00010000

在Win32 SDK中设置窗口样式的枚举变量就是这么设置的,这样的设置还很容易做二进制运算,而且不会产生枚举值碰撞的后果,也就是运算结果也唯一。

定制随机数产生域:Setting random number range

这里用到模运算,以C语言为例

如想产生1到100之间的随机数可以
rand() % 100 + 1

如想产生300到420之间的随机数可以
rand() % 120 + 300

公式为
rand() % (max_range - min_range) + min_range

星期二, 四月 08, 2008

今天为饭否做了个gadget

今天为饭否做了个gadget,名为fanfou iGoogle
试用点击这里