C++基础(3):标准数据类型
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’ | 空字符 |
' \’ ' | 单引号 |
' \" ' | 双引号 |
' \\ ' | 一个反斜杠字符 |
【题目】大小字母转换
|
|
运行结果:
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.在不同数据类型混合运算时,如果搞不清楚自动转换规则,就用强制转换。
- 原文作者:图图爸爸
- 原文链接:https://www.tubacode.com/post/cpp-data-type.html
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。