一、数据类型
常见
#define DEF_BIT_00 0x01u
#define DEF_BIT_01 0x02u
0U 数据类型为:unsigned int 无符号整型
如果不写U后缀,系统默认为:int, 即,有符号整数。
1f
1l 数据类型为:long int
1.12l 数据类型为:long double
u 就表示unsigned,ul 就表示 unsigned long型,也就是无符号的意思。常用在非符号的场景,一是为了防止编译器将它作为有符号数字进行处理,显式声明,以防万一;二是防止编译提醒符合位改变等情况。
举例:比如0x80 这是一个16位的数,如果不加u,默认为有符号INT型,有的编译器认为它是个负数,然后多次右移这个数的时候,编译器就会提醒符号位改变,就从负数变成了正数。如果加上u,0x80u,直接声明这是一个无符号的16位数,随便怎么移动都没事,就相当于 usigned short 。
加了l就是long型,0x00是int型,0x00u是无符号int型,0x00ul长整型,其实这和在数字末尾加f,加l等的作用是类似的。
1.数值常数有:整型常数、浮点常数;
2.只有数值常数才有后缀说明;
3.数值常数后缀不区分字母大小写。
(1)整型常数的表示形式有:十进制形式、以0开头的八进制形式、以0x开头的十六进制形式,无二进制形式。 整型常数默认是signed int的。 对整型常数进行类型转换的后缀只有:u或U(unsigned)、l或L(long)、u/U与l/L的组合(如:ul、lu、Lu等)。例:100u; -123u; 0x123l;
(2)浮点常数的表示形式有:科学计数形式和小数点形式。 浮点常数默认是double的。 对浮点常数进行类型转换的后缀只有:f或F(单精度浮点数)、l或L(长双精度浮点数)。(注:因浮点型常数总是有符号的,故没有u或U后缀)。例:1.23e5f; 1.23l; -123.45f;
二、数值表示方法
1、数值后面加“”H“、“h”的意义是该数值是用16进制表示的。
2、数值后面加“”B“、“b”的意义是该数值是用2进制表示的。
3、后面什么也不加,代表10进制。
栗子:
11111111B = FFH = 255
4、数值前面加“0”的意义是该数值是八进制。
5、数值前面加“0x”的意义是该数值是十六进制。