逻辑操作类C函数看不懂啊?~!!

来源:百度知道 编辑:UC知道 时间:2024/06/08 03:23:11
typedef unsigned long Stage_v2
#define STAGEA (lul<<0)
#define STAGEB (lul<<1)
#define STAGEC (lul<<2)

void dostages_v2 (Stages_v2 *stages_v2) {
Stages_v2 stages = stages_v2;
if (stages & STAGEA){
dostageA();
}
if (stages & STAGEB){
dostageB();
}
if (stages & STAGEC){
dostageC();
}
}

那位高手帮我看看啊,前面宏定义的lul事什么东西啊?
小弟在此感谢

typedef unsigned long Stage_v2
//宏定义,相当于定义一个无符号长整形Stage_v2 类型。
#define STAGEA (lul<<0)
//定义操作安位左移,(程序中如果出现STAGEA,就用(lul<<0) 代替)
//这就是define的作用。
#define STAGEB (lul<<1)
#define STAGEC (lul<<2)

void dostages_v2 (Stages_v2 *stages_v2) {
//函数dostages_v2代邮Stages_v2指针类型的参数stages_v2
Stages_v2 stages = stages_v2;
if (stages & STAGEA){
//如果按位与结果位非0则做函数dostageA;后面以此类推
dostageA();
}
if (stages & STAGEB){
dostageB();
}
if (stages & STAGEC){
dostageC();
}
}

宏定义 是替代。

程序中
STAGEA 用 (lul<<0) 替代
STAGEB 用 (lul<<1) 替代
STAGEC 用 (lul<<2) 替代

例:
if (stages & STAGEA){

if (stages & (lul<<0) ){

<< 左移 运算,按二进制移位。

STAGEB (lul<<1) 这个是右移操作 就是把lul右移1位 比如lul = 2 右移1位就lul = 1,位移操作不懂用百度搜!