第六章: types and declarations

一:c++变量基本类型

c++变量类型可以分为内置类型(built-in types)和用户定义类型(user-defined type)两种。内置类型可以分为基本类型(如bool,int, char, double,void等)和用声明算符构造的类型(如int*, char[], double&, double&&)。用户定义类型指的是数据结构,类和枚举类型。下面主要给出基本类型一些介绍:

基本类型:

1: bool类型:
(1): bool类型有两个值,true和false,其用于表达逻辑表达式的结果,如bool result=(a==b) ,如果变量a和b有相同值,则bool变量result的值为true,否则为false;
(2): bool类型经常作为函数的返回类型,如bool is_open(File*)
(3):当bool转换成整数时,true转换成1,false转换成0。当整数转换成bool类型时,非0整数转换成true,整数0转为成false;
(4):指针也能够隐式地转换成bool,非0指针转换成true,0指针转换成false。

2:字符串类型:
(1):字符串类型最常见的是用char表示。在大部分机器上,它的大小是1个字节,因此它能够存储256个不同的值。但是正如我们知道的,8个二进制位可以表示成0~255或者是-128~127。在不同的机器上表示的是不一样的。如

char c=255;
int i=c;

在有些机器上i的输出值是255,在有些机器上是-1。但是幸运的是,我们见到的大部分字符它的整型大小是在0~127的范围内。
(2):为了解决char在不同的机器上表示的范围不一样这一问题,c++引进了signed char和unsigned char这两个类型,signed char表示的范围是-127~127,unsigned char表示的范围是0~255。但是由于表示范围的不同,这三种类型之间的相互转换是很容易出问题的。因此为了避免潜在的错误,我们应该用char和避免使用负字符串值。
(3):字符字面值是用单引号括起来的单个字符,如’a’。这个要与字符串字面值区别开来,字符串字面值是用双引号括起来的零个或多个字符,如”a”。我们可以用八进制来表示转义字符,形式为\ooo,这里ooo表示三个八进制数字(最多只能是3个八进制数字)。同样,我们也可以用十六进制来表示转义字符,形式为\xoo…,它由一个反斜线符,一个x和一个或者多个十六进制数字组成。
3:整型:
(1):在整型中,我们用的最多的是int,但不像char,我们认为int是有符号的,也就是可以表示负数,而char是依赖于机器的。除了int之外,还有unsigned int, long unsigned int, long int等等。
(2):整型字面值可以用十进制位,八进制位和十六进制位表示。以0开头的字面值整数常量表示八进制,以0x或0X开头的表示十六进制,所以说0这个字面值整数常量表示的是八进制。一般来说,字面值整数常量默认是int或long类型,其精度取决于字面值。但我们可以通过增加后缀(L,l,U,u),能够将字面值整数常量转换成long,unsigned,或unsigned long类型。
4:浮点型:
(1):表示浮点型有三个类型,float,double,long double。因为在数值计算中,精确度很重要,所以选择合适的类型来表示浮点数很关键,一般选择double。
(2):通常可以用十进制或者科学计数法来表示浮点值子面值常量。使用科学计数法时,指数用E或者e表示。默认的浮点值字面值常量为double类型,在数值的后面加上F或f表示单精度。同样加上L或者l表示扩展精度。如1E-3F,1.2345E1L。
5:void类型
void类型有两种用途,一种是用于表明函数不返回任何值,如void f()。另外一种是用在指针类型上void*上,这个指针类型可以保存任何类型对象的地址。如double obj=3.14,void* pv=&obj。但void*只支持几种有限的操作:与另一个指针进行比较;向函数传递void*指针或从函数返回void*指针;给另一个void*指针赋值。但不允许使用void*指针操纵它所指向的对象。要想获得void*指针的值可以用如下方法

double obj=3.14;
void* pv=&obj;
double* dp=static_cast<double*>(pv);

基本类型的长度:

1:sizeof操作符的作用是返回一个对象或类型名的长度,长度的单位是字节并且sizeof表达式的结果是编译时常量。如sizeof(int), sizeof(int*), sizeof(char)等等。但必须要注意的是对指针做sizeof操作返回的是存放指针所需的内存大小,而不是指针所指向对象的大小。
2:对于基本类型更多的性质我们可以在这个头文件中找到,如用std::numeric_limits::max可以返回float类型所存储的最大数值,可以用std::numeric_limits::is_signed可以判断char是signed或者是unsigned。

identifier

在c++中,identifier由字母和数字组成,第一个字符一定要是字母,我们认为’_’字符属于字母。c++没有规定identifier中字符的个数。当然用户定义的identifier不能与c++中已经定义好的关键字冲突,如new和delete。并且一定要注意在c++中区分大小写,hello这个变量与HELLO这个变量是不同的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值