`
chenning009
  • 浏览: 4124 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C++ Primer 第五版 读书笔记 第二章

 
阅读更多

第二章 变量和基本类型

2.1. 基本内置类型

 

C++ 定义了一组表示整数、浮点数、单个字符和布尔值的算术类型 ,另外还定义了一种称为 void 的特殊类型。void 类型没有对应的值 ,仅用在有限的一些情况下,通常用作无返回值函数的返回类型

 

表示整数、字符和布尔值的算术类型合称为 整型

 

字符类型有两种:charwchar_tchar 类型保证了有足够的空间,能够存储机器基本字符集中任何字符相应的数值,因此,char 类型通常是单个机器字节(byte)。wchar_t 类型用于扩展字符集,比如汉字和日语,这些字符集中的一些字符不能用单个 char 表示。

 

shortintlong 类型都表示整型值,存储空间的大小不同。一般, short 类型为半个机器字 长,int 类型为一个机器字长,而 long 类型为一个或两个机器字长(在 32 位机器中 int 类型和 long 类型通常字长是相同的)。

 

整型 intshortlong默认为带符号型 。要获得无符号型则必须指定该类型为 unsigned ,比如 unsigned longunsigned int 类型可以简写为 unsigned ,也就是说,unsigned 后不加其他类型说明符意味着是 unsigned int

 

和其他整型不同,char三种不同的类型plain charunsigned charsigned char 。虽然 char 有三种不同的类型,但只有两种表示方式。可以使用 unsigned char 或 signed char 表示 char 类型。使用哪种 char 表示方式由编译器而定。

 

对于实际的程序来说,float 类型精度通常是不够的——float 型只能保证 6 位有效数字 ,而 double 型至少可以保证 10 位有效数字 ,能满足大多数计算的需要。

 

2.2. 字面值常量

字面值整数常量的类型默认为 intlong 类型。其精度类型决定于字面值——其值适合 int 就是 int 类型,比 int 大的值就是 long 类型。通过增加后缀,能够强制将字面值整数常量转换为 longunsignedunsigned long 类型 。通过在数值后面加 L 或者 l (字母“l”大写或小写)指定常量为 long 类型。

类似地,可通过在数值后面加 Uu 定义 unsigned 类型 。同时加 LU 就能够得到 unsigned long 类型的字面值常量。没有 short 类型的字面值常量。

 

通常可以用十进制或者科学计数法来表示浮点字面值常量。使用科学计数法时,指数用 E 或者 e 表示默认的浮点字面值常量为 double 类型 。在数值的后面加上 Ff 表示单精度 。同样加上 L 或者 l 表示扩展精度(再次提醒,不提倡使用小写字母l)。

 

下面每一组字面值表示相同的值:

     3.14159F            .001f          12.345L            0.
     3.14159E0f          1E-3F          1.2345E1L          0e0

 

 

也存在宽字符串字面值,一样在前面加“L ”,如

      L"a wide string literal"

如果连接字符串字面值和宽字符串字面值,将会出现什么结果呢?例如:

 

std::cout << "multi-line " L"literal " << std::endl;

其结果是未定义的 ,也就是说,连接不同类型的行为标准没有定义。这个程序可能会执行,也可能会崩溃或者产生没有用的值,而且在不同的编译器下程序的动作可能不同。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics