2.5:指出下述字面值的数据类型并说明每一组内几种字面值得区别:
a)'a',L'a' , "a",L"a"
'a':字符型字面值,类型为char;
L'a':宽字符型字面值,类型为wchar_t;
"a":字符串字面值;
L"a":宽字符串字面值;
b)10,,10u,10L,10uL,012,0xC
10:整型字面值;
10u:无符号整型字面值,类型为unsigned;
10L:长整型字面值,类型为long;
10uL:无符号长整型字面值,类型为unisgned long;
012:八进制字面值;
0xC:十六进制字面值;
c)3.14,3.14f,3.14L
3.14:浮点型字面值;
3.14f:单精度浮点型字面值,类型为float;
3.14L:扩展精度浮点型字面值,类型为long double;
d)10,10u,10.,10e-2
10:整型字面值;
10u:无符号整型字面值,类型为unsigned;
10.:浮点型字面值,类型为double;
10e-2:浮点型字面值,类型double,表示为0.100000000000000;
练习2.6:下面两组定义是否有区别,如果有,请叙述之:
int month=9,day=7;
int month=09,day=07;
1)定义变量的形式是以十进制格式的数赋值给变量。
2)定义变量的形式是以八进制格式的数赋值给变量,但是,9超出了八进制的范围,所以编译时会出错。
练习2.7:下述字面值表示何种含义?它们各自的数据类型是什么?
a)"Who goes with F\145rgus?\012"------------>"Who goes with Fergus?\n" 字面值是字符串型,\145:八进制数,转换成十进制数,就是e;\012:换行。
b)3.14e1L---------------------------->3.14xe1=31.400000000000000,类型为long double;
c)1024f------------------------------->1024.0000000,类型为float,在某些编译器环境下会出错,改成1024.f即可。
d)3.14L------------------------------->3.140000000000000,类型为long double