C++语言提供了很多数据类型,今天介绍三种主要的数据类型:整型、浮点型、字符型。这些都是系统定义的数据类型,称为标准数据类型。

整型

在C++中,整型数据的标识符为int,整型变量的取值范围又可以将整型变量定义为8种整型类型。在程序设计中,根据数据的使用范围,来定义具体的数据类型:

数据类型 定义标识符 占字节数 数值范围 范围
短整型 short[int] 2(16位) -32768~32767 5位数
整型 [long]int 4(32位) -2147483648~2147483647 10位数
长整型 long[int] 4(32位) -2147483648~2147483647 10位数
超长整型 long long [ int] 8(64位) -9223372036854775808~
9223372036854775807
19位数
无符号整型 unsigned[int] 2(16位) 0~65535 5位正数
无符号短整型 unsigned short[int] 2(16位) 0~65535 5位正数
无符号长整型 unsigned long[int] 4(32位) 0~4294967295 10位正数
无符号超长整型 unsigned long long 8(64位) 0~ 18446744073709551615 19位正数

浮点数

浮点数的变量存储的是实数,实数包括正、负、〇。在C++中,表示实数形式有两种:

十进制表示法

这是我们平常使用的记数方法,也就是我们平常说的带小数点的数字。

如,5、0.0、5.98、-9.5、-7.098等等都是浮点型的数据。

科学记数法

科学记数法是采用指数形式的表示方法,如1.25X10^5可表示成1.25E+05。在科学记数法中,字母“E”表示10这个“底数”,而“E”之前为一个十进制表示的小数,称为尾数,“E”之后必须是一个整数,称为“指数”。如,-1234.56E+26,+0.268E-50,1E5是合法形式,而E5,1.2E+0.5都不是合法的形式。

C++语言支持三种实型,它们是float(单精度实型)、double(双精度实型)、long double(长双精度实型)。每一种类型规定了相应的实数取值范围、所使用的存储空间(字节数)以及能达到的精度(有效位数)。float 在空间允许的情况下没有必要使用,都应使用double提高精度。

数据类型 定义标识符 数据范围 存储空间 有效位数
单精度浮点 float -3.4E+38~3.4E+38 4(32位) 6~7位
双精度浮点 double -1.7E-308~1.7E+308 8(64位) 15~16位
长双精度浮点 long double -3.4E +4932~3.4E+ 4932 16(128位) 18~19位
布尔变量 bool true or false 1(8位)

字符型

字符型的数据有两种表示方法:一种是普通表示法,另一种是转义字符表示法。

普通表示法

字符常量是由单个字符组成,所有字符采用ASCII编码,ASCII编码共有128个字符(在此省略)。在程序中,通常用一对单引号将单个字符括起来表示一个字符常量。如,‘a’,‘A’,‘0’等。举例,字符’A’的ASCII编码是65,字符’a’的ASCII编码是97,字符'0’的ASCII编码是48。

因此,字符可以和整型变量比较大小或者可运算,如,‘a’<70 ,‘a’+4 等。

转义字符表示法

转义字符有三种用法:表示控制字符、表示特殊字符、表示所有字符。常用的转义字符如下所示。

转义字符 含义
‘\n’ 换行
‘\t’ 水平制表符
‘\b’ 退格
‘\r’ 回车(不换行)
‘\0’ 空字符
' \’ ' 单引号
' \" ' 双引号
' \\ ' 一个反斜杠字符

【题目】大小字母转换

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#include<iostream>
using namespace std;
int main(){
    char c1 = 'a';
    char c2 = 'A';
    cout << c1 << " " << c2 << endl;
    c1 = c1 -32;//小写字母转为大写字母
    c2 = c2 +32;//大写字母转为小写字母
    cout << c1 << " " << c2 << endl;
    return 0;
}

运行结果:

a A
A a

所有小写字母的ASCII比对应大写字母的ASCII 大32,所以c1减去32后便得到原来字母的大写形式。反之,c2加上32后便得到原来字母的小写形式。

数据类型转换

运算时的转换规则

C++基础(1)中,提到14÷4×4=12,14.0÷×4=14。其中的原因,就是整型、浮点型、字符型数据间可以混合运算。在这种情况下,需要将不相同的数据类型转换成相同的数据类型,然后再进行运算。为了保证运算精度,系统在运算时的转换规则是将存储空间(占字节数)小的数据类型转成存储空间(占字节数)大的数据类型。这种转换是系统自动进行的。

赋值时的转换规则

1.float、double型赋值给int型:直接舍掉小数部分。 例如,“int i=f+0.6;”,f的值为4.0,右边算术表达式运算后的结果为4. 6的double型的数据,根据上述转换原则,直接舍掉小数部分,所以i的值为4。

2.int、char型赋值给float、double型:补足有效位以进行数据类型转换。 例如,“float f=4;”,float为7位有效数字,所以f的值为4. 000000。

3.char型(1字节)赋给int型(4字节):数值赋给int型的低8位,其他位补0。

4.long long int型赋值给int型::long long int 数据的低字节部分赋值给 int 型。。

5.unsigned int型赋值给int型:直接传送数值。

6.非unsigned int型赋值给位数相同的unsigned int型:直接传送数值。

强制数据类型转换

在C++中,还允许强制类型转换,即,将一数据类型转换为指定的另一种数据类型。

例如,“int b = 5; float a = 2.5, c =4.5;”,求下面表达式“a+(int)(b/3*(int)(a+c)/2.0)%4”的值。

根据运算符的结合性规则,表达式从左向右执行,并且先乘除后加减。运算过程为b/3 = 1, (a+c)/2.0 =3.5,1+(int)3.5 = 4,(int)4%4 = 0, a+0 =2.5,所以最终结果为2.5。

注意

1.在程序设计时,进行使用简单的表达式;

2.在不同数据类型混合运算时,如果搞不清楚自动转换规则,就用强制转换。

公众号:格致书院