常量的定义和使用

1.字符型常量、整数型常量、浮点数常量的赋值;

有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。

//字符型常量
char A = '\xFF';                        //合格
char A = 0XFF;                          //不合格,因为0xff默认为int型

//整数
int i = 100;
unsigned int u;

u = 100;                                //十进制
u = 0124;                               //0 作为前缀,八进制
u = 0x80000000U                         //0X 作为前缀,十六进制
u = (unsigned int)-1;                   //0xffffffff
u = (unsigned int)-2;                   //0xfffffffe

long l = 0x80000000L;                   //后缀:l/L
unsigned long ul = 0x80000000UL;        //后缀:U、L,顺序和大小写可随意

//浮点数
float f1 = 0.1F;
double f2 = 0.1;                        //没有后缀!
long double f3 = 0.1L; 

//filename字符串是"/home/user/foo.bar"连起来的,即“A” "B"与“AB”同效。
#define EXT  ".bar"
#define NAME "foo"
static const char* filename = "/home/" "user/" NAME EXT;

3.借助编译器来定义常量值

//1.定义XXX_FIRST和XXX_LAST枚举量
//2.定义XXX_MIN、XXX_MAX和XXX_NR宏
/*以后增删枚举量的时候,不需要再去做总数量的统计和更改相关的宏定义值*/
typedef enum purc_variant_type
{
    PURC_VARIANT_TYPE_FIRST = 0,
    
    /*critical:keep order as is*/
    PURC_VARIANT_TYPE_UNDEFINED = PURC_VARIANT_TYPE_FIRST,
    PURC_VARIANT_TYPE_NULL,
    PURC....,
    ......,
    PURC_VARIANT_TYPE_SET,
    PURC_VARIANT_TYPE_LAST = PURC_VARIANT_TYPE_SET,
}purc_variant_type;

#define PURC_VARIANT_TYPE_MIN    PURC_VARIANT_TYPE_FIRST
#define PURC_VARIANT_TYPE_MAX    PURC_VARIANT_TYPE_LAST
#define PURC_VARIANT_TYPE_NR     (PURC_VARIANT_TYPE_MAX - PURC_VARIANT_TYPE_MIN + 1)

4.混合用标识符和标志位

#define WS_EX_WINTYPE_MASK            0X0000000FL

#define WS_EX_WINTYPE_TOOLTIP         0X00000001L
#define WS_EX_WINTYPE_GLOBAL          0X00000002L
#define WS_EX_WINTYPE_DOCKER          0X00000003L
...

/*window_style可以分不同的段,每段功能按数来区分不用按单独的位*/
switch(window_style & WS_EX_WINTYPE_MASK) {
case WS_EX_WINTYPE_TOOLTIP:
    ...
    break;
}

 

上一篇:Vulhub-Tomcat漏洞复现


下一篇:ws请求定时