笔记——C++ primer第二章 基本内置类型

来源:互联网 发布:淘宝不支持子账号登陆 编辑:程序博客网 时间:2024/05/29 19:18
一、1、C++基本内置类型
整型、浮点型、字符型、布尔类型,此外还有void类型
void类型:没有对应的值,通常用作无返回值函数的返回类型。
算术类型的存储空间依机器而定,存储空间指的是表示该类型的二进制位数,各类类型占用空间如下表:
 
在vc2010下,short为16位,int 和 long 为32位,float为小数点后保存六位
二、基本类型
(一)整型
1、整型:整数、字符值、布尔值的算术类型合称
(1) char类型通常是用于单个机器字节
        wchar_t类型用于扩展字符集,比如汉字、日语
(2)块的存储
大部分计算机使用特定位数的块来存储数据,通常8位的块作为一个字节,32位的块或者4个字节成为“字”;
大多数计算机将每一个字节和一个称之为地址的数关联起来;
所以要让地址有意义,必须知道地址中存储的类型,才能知道需要多少位和如何解释这些位。
(3)bool类型的值仅有true和false,在程序设计中,可以用数值直接赋值,0代表false,非0代表true
(4)带符号的类型和不带符号的类型
除bool类型外,整型可带符号和不带符号,带符号可表示正负数,不带符号仅能表示>=0的数;
整型int、short、long默认带符号,unsigned int为不带符号,可缩写为unsigned;
编程中用到char一般指的是signed char,它和unsigned char的区别是类型转换的时候符号位的区别。
2、整型值表示
符号位为1,表示的是负数;
符号位为0,表示的是0或者正数。
一个8位的signed整数取值范围为-128~127,分析结果如下:
正数:0000 0000 - 0111 1111,对应十进制为0 - 127
负数:1000 0000 - 1111 1111,在表达中1000 0000被规定为最小值,即-128,那么取值范围就是-128~-1,计算机中负数以补码形式表示。
3、整型的赋值
   当把超出范围的值赋给对象时,其结果取决于signed和unsigned类型,分析如下:
(1)对于unsigned类型:以unsigned char为例,取值范围为0-255,当超出这个值,赋值336,则编译器会取该值对256模后的值,实际赋值为80;当赋值为负数,如-1时,实际赋值为-1对256求模的值为255;
(2)对于signed类型,对赋给超出范围值时,一般取值为该值对该类型数目求模后的值,如取值-129,实际赋值为-129对256求模为127.
(二)浮点型
1、三种类型:
float:单精度浮点数,在VC2010下用32位来表示
double:双精度浮点数,在VC2010下用64位来表示
long double:扩展精度浮点数,在VC2010下用64位来表示
2、计算数据时一般使用int类型,而不使用short和char类型:因为short和char类型容易造成越界;
   计算浮点数时,一般使用double,因为计算满足要求,且相对使用float代价可忽略不计;
   计算浮点数时可以有负数,没有unsigned 和 signed的分别。
(三)常量
1、tips:只有内置类型存在常量,没有类类型的常量
2、整型常量规则
(1)定义方式:十进制、八进制、十六进制
20 //decimal
024 //octal,以0开头
0x14 //hexadecimal,以0x或者0X开头
此外,通过在常量最后加上L或者l,指定常量为long类型。(注:一般使用大写,小写易混淆)
类似定义:
128U   //unsigned
1024UL //unsigned long
1L //long
注:没有short类型的常量
3、浮点常量规则
(1)表示方式:十进制或者科学计数法,默认的浮点常量为double类型
(2)在数值后加上F或者f表示单精度,加上L或者l表示双精度,常用表达法如下:
十进制: 3.14159F.001F
科学计数法: 3.14159E0F 1E-3F
4、布尔常量和字符常量
(1)bool常量:true和false
(2)可打印字符常量用单引号来定义:
'a' '2'',' ' '//blank
以上定义的是字符型常量,加上前缀L,变成宽类型wchar_t.如L'a'
(3)非打印字符的转义序列
非打印字符序列包括:退格、控制符、特殊字符(单引号、双引号、反斜线),c++中定义的转义字符如下:
换行符 \n 水平制表符 \t 纵向制表符 \v退格键 \b
回车符 \r 进纸符(走纸换页) \f 报警(响铃)符 \a反斜线 \\
疑问号 \? 单引号 \' 双引号 \"
八进制表示转义字符
\ooo //ooo表示三个八进制数,如响铃符可以表示为\7(查看ASCII码表)
十六进制表示转义字符
\xddd //它由一个反斜线,一个x,一个或者多个十六进制数组成
注:'\0'通常表示字符串的结束
5、字符串
(1)表示方式:用双引号括起来的一个或者多个字符表示,不可打印字符用转义字符表示
eg: "\nCC\toptions\tfile.[CC]\n"
为了兼容C语言,C++在每个字符串后自动添加一个空字符
eg: 'a' "a"分别表示字符常量a、字符串a和\0
此外,存在宽字符串常量,表示如下:
eg: L"a wide string literal",表示字符串中每个字符都是宽字符
6、字符串的连接
(1)两个相邻的仅由空格、制表符或者换行符分开的字符串可连接成一个新的字符串
eg: std::out << "a multi-line "
<< "string literal "
<< "using connection"
<< std::endl;
输出值为:a multi-line string literal using connection
如果连接的是字符串和宽字符串,其结果是未定义(错误)。
7、多行字符串
(1)更基本的方法,即格式化输出法:
在一行的末尾加上一反斜线符号可将此行和下一行当作同一行处理。
这个特性常用来写较长的字符串。
eg: std::cou\
t << "Hi" <<std::endl;==>> std::cout << "Hi" << std::endl;

注:反斜线必须是当行的末尾,不允许在末尾加上注释或者空格


附:ASCII码表



0 0
原创粉丝点击