第三章(处理数据)

 

l         面向对象编程(OPP)的本质是设计并扩展自己的数据类型。设计自己的数据类型就是让类型与数据匹配。内置的C++类型分两种:基本类型和复合类型。

C++变量命名规则:

n         在名称中只能使用字母字符、数字和下划线

n         名称的第一个字符不能是数字

n         区分大小写

n         不能使用C++的关键字作名称

n         以两个下划线或下划线和大写字母打头的名称被保留给实现(编译器及其使用的资源)使用。以一个下划线开头的名称被保留给实现,用作全局标识符

n         C++对名称长度没有限制

 

操作符sizeof

sizeof算法指出,在使用8位字节的系统中,int的长度为4个字节。可对类型名或变量名使用sizeof操作符。对类型名(如int)使用sizeof操作符,应将名称放在括号中;但对变量名使用该操作符,括号是可选的。

cout<<”int is”<<sizeof (int) << “bytes.\n”;

cout<<”short is”<<sizeof n_short<< “bytes.\n”;

 

符号常量

#define编译命令是C语言遗留下来的。C++有一种更好的创建符号常量的方法:使用关键字const.

 

进制显示

控制符dec,hex,oct分别指示cout以十进制、十六进制、八进制显示整数。默认格式为十进制,在修改格式之前,原来的格式一直有效。

如int chest=42;

       int waist=42;

       int inseam=42;

       cout<<”chest=”<<chest<<endl;

       cout<<hex;

       cout<<”waist=”<<waist<<endl;

       cout<<oct;

       cout<<”inseam=”<<inseam<<endl;

 

确定常量类型

整数后面的后缀:l或L表示long型;u或U后缀表示unsigned int型;ul/uL/Ul/UL/lu/LU/lU/LU皆表示unsigned long型。

 

字符类型

实际上,多数系统所支持的字符都不超过256种。因此用一个字节就可以表示所有的符号。在美国,最常用的符号集是ASCII字符集。C++实现使用的是主机系统的编码。IBM大型机使用EBCDIC编码。ASCII和EBCDIC都不能很好地满足国际需要,C++支持的宽字符类型可以存储更多的值,如国际Unicode字符集使用的值。

 

成员函数cout.put()

类定义了如何表示和控制数据。成员函数归类所有,描述了操纵类数据的方法。类ostream有一个put()成员函数,用来输出字符。只能通过类的特定对象(cout)来使用成员函数。要通过对象使用成员函数,必须用句点将对象名和函数名连接起来。句点被称为成员操作符。cout.put()的意思是,通过类对象cout来使用函数put()。cout.put()成员函数是另一种字符显示的方法。

在早期版本的C++中,不区分int型和char型,所以使用cout.put()是显示整形和字符型上做区分。

 

有些字符不能直接通过键盘输入到程序中。因为C++语言赋予了它们特殊的含义。对于这些字符,C++提供了一种特殊的表示方法——转义序列。

       char alarm='\a';

       cout<<alarm<<"Don't do that again!\a\n";

       cout<<"Ben \"Buggsie\" Hacker \n was here!\n";

由上可以看出,被转义的字符可分为两类,一类是会被C++代码编译器解释了其它含义,但有时候需要其本身的ACSII符号来显示的,如双引号。另一类,是其符号本身代表一种操作。用转义字符不是想用来显示,而是要告诉程序执行一个动作的。如\n.

C++常见的转义序列编码:

换行符

NL(LF)

\n

水平制表符

HT

\t

垂直制表符

VT

\v

退格

BS

\b

回车

CR

\r

振铃

BEL

\a

反斜杠

\

\\

问号

?

\?

单引号

\’

双引号

\”

可以基于字符的八进制或十六进制来使用转义序列。如打印右箭头,使用

cout<<’\x1a’;或者cout<<’\032’;

 

通用字符名

C++标准允许实现提供扩展源字符集和扩展执行字符集。C++可以使用通用字符名,它独立于特定的键盘。通用字符名以\u或\U开头。\u后面是8个十六进制位,\U后面则是16个十六进制位。

如int k\u00F6rper;

cout<<”Let them eat g\u00E2teau.\n”;

 

unicode提供了一种表示各种字符集的解决方案

ISO10646,对多种语言文本进行编码的标准。这两个标准是同步的。

wchar_t,宽字符型。可以表示扩展字符集。iostream头文件的最新版本提供与cint和cout类似的工具——wcin和wcout,用于处理wchar_t流。可以通过加上前缀L来表示宽字符常量和宽字符串。

如wchar_t bob=L’P’;

wcout<<L”tall”<<endl;

ANSI/ISO c++标准添加了一种名叫bool的新类型。任何数字值可指针值都可以隐式转换为bool值。任何非零值都被转换为true,而非零值转换为false.

l         const 限定符

创建常量的通用格式

const type name=value;

注意,应在声明中对const进行初始化。如果在声明中没有初始化常量,则该常量值是不确定的,且无法修改它。

l         浮点数

-8.33E4指的是-83300.

d.dddE+n,表示小数点向右移n位

d.dddE-n,表示小数占向左移n位。

Borland C++中

float,有效位数6

double,有效位数15

long double,有效位数18

书写浮点常量的时候,默认为double类型,如果希望常量为float型,可以使用f或F后缀;对于long double类型,可使用l或L后缀。

 

除法运算时,当两个操作数皆为整形时,相除结果的小数部分被丢弃,结果还是一个整数。当有一个操作数为float型时,结果为float型。

 

类型转换

1.       变量赋值进

long so_long;

short thirty=value;

so_long= thirty;

       潜在问题

n         大浮点类型转换成小浮点类型。如将double转换为float型时,精度降低,如果double型的值超出float型的值的范围    ,结果不确定;

n         将浮点类型转换为整形,小数部分丢失。浮点值超出整形范围,结果不确定

n         大整形转化为小整形。如long转换为short,原来的值超出目标范围,通常只复制右边的字节。

2.       表达式中转换

short chickens=20;

short ducks=35;

short fowl=chicks+ducks;

3.       传递参数进转换

4.       强制类型转换

强制类型转换的通用格式

(typename)value;

 typename (value);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值