一 常量
1. 字面值常量
(1)整型字面值
整数字面值常量可以使用三种进制表示:十进制,八进制,十六进制,当然这些进制是不会改变其内存中的二进制值的。其中八进制以零(0)开头,十六进制以0x或0X开头。
例如,30这个数,分别表示成十进制,八进制,十六进制即是:
30 //十进制
036 //八进制
0x1e //十六进制(不区分大小写)
由上一章可知,整型按照其内存存储位数又分为unsigned,int,long型等分类,那么一个数字到底是分配到什么型呢?
首先,假如你的数字只是单纯的数字,并未加任何后缀,就像上面的那个数字,那么它的默认类型则是int类型,但是如果数字范围超过了int型,那么其默认类型就会是long型了。
其次,还要一种方式让你可以指定类型,一种是指定为unsigned类型,就是在数值后面添加U(不区分大小写),另一种就是指定为long型,即是在数值后添加L(同样不区分大小写),两种也可以组合,比如10UL,表示unsigned long型,U和L的组合顺序以及大小写都可随意,表示这个值是以该类型进行存储,而非默认的int型。
注意,在这里,没有short型的字面值常量。
(2)浮点型字面值
通常用十进制或是科学计数法表示浮点型字面值,使用科学计数法时,用E(不区分大小写)来表示底数10,指数部分用十进制,其中默认的浮点字面值为double型。如果想要使用float型,则需要在数值后面加上F(不区分大小写)来表示单精度,同样的,扩展精度型则需要在数值后面添加L(不区分大小写),如下:
6.15f(float 6.15) .001f (float 0.001) -1. (double -1) 7.54e0 (double 7.54e+0=7.54)
8.44e-3f(float 8.44e-3=0.00844) 1.23e1L(long double 1.23e+1=12.3) 0e0(double 0)
3.5e40f(超出float范围,编译时报警告,运行时直接打印出inf)
(3)布尔字面值
一共就两个值,true和false,但是布尔变量除了可赋值为布尔字面值外,还可以以非零值为true,零值为false。
(4)字符字面值
用单引号定义单个字符,都是char型,在字符前面加L(注意大写)就能够得到wchar_t类型的宽字符字面值。比如:
‘a’ ‘3’ ‘ ’ ‘,’ L'a'
注意:如果单引号内是一个中文字符,编译会报错的,不过如果在前面加一个L就没问题了,