字面值常量:也称字面值,是像43这样的值,不能修改,每个字面值都有对应的类型,例如 0 是 int 型,3.14159 是 double型。只有内置类型的字面值,没有类类型的字面值。
字面值整数常量:
字面值整数常量有三种表示形式:十进制,八进制,十六进制,当然最终还是以二进制表示。
字面值整数常量的类型默认是int 或 long。其精度取决于字面值,其值适合 int 就是 int 类型, 比 int 大的值就是 long 类型。
可通过加后缀强制将字面值整数常量转换为 long 、unsigned 、unsigned long 类型。
U 或 u 定义 unsigned 类型。L 或 l 定义 long 类型(不推荐使用 l)。U L组合使用表示unsigned long 类型。
浮点字面值:
可以用十进制或科学计数法表示浮点字面值常量。
使用科学计数法时,指数用 E 或者 e 表示。默认的浮点字面值常量为 double 类型。在数值的后面加上 F 或 f 表示单精度。同样加上 L 或者 l 表示扩展精度(再次提醒,不提倡使用小写字母 l)。下面每一组字面值表示相同的值:
3.14159F .001f 12.345L 0.
3.14159E0f 1E-3F 1.2345E1L 0e0
字符串分为普通字符串和宽字符串(例如:L"abc"),普通字符串连接可以这样使用:
std::cout << "abc" "def" <<endl;
输出结果为abcdef
但是普通字符串和宽字符串不能这样连接,因为它们属于不同的类型,连接不同的类型其结果是未定义的。程序运行不能依赖于未定义的,即使能够正常运行,那也是错的,因为可能是巧合,不同的时间或者不同的编译器运行的结果可能都不同。
下列哪些(如果有)是非法的?
(a) "Who goes with F\145rgus?\012"
(b) 3.14e1L (c) "two" L"some"
(d) 1024f (e) 3.14UL
(f) "multiple line
comment"
(c)"two" "some" (说明L"two" L"some" 也是错误的)
(d)1024.f
(e) 3.14f或者3.14L
(f)"multiple line\
comment"
如有错误之处,欢迎指出,谢谢。