mylogo

退役程序员的茶室 RetiredCoder.cn

← 返回上一页

C++编程基础: 4. 数据类型

2025-04-11 14:27:08

本系列文章是配合我发布的《C++编程基础》系列视频教程的知识点总结和补充。这一节我们来讲讲数据类型。

在声明常量变量或定义有返回值的函数时,都需要告诉系统这些数据的类型是什么,在程序设计之初就该想清楚所用数值该对应使用哪类数据类型,应该预估数据最大可能和最小可能的情况,以避免数值溢出的可能。以下是C++里基本的数据类型:

整数类型 int

unsigned short int us_num=18;

unsigned short us_num=18;

整数类型分为有符号和无符号两种,有符号的整型有short int, int, long int(或者long), long long, 无符号的整型前面加上保留字unsigned, 如unsigned int,这些整数类型当中,最常用的是int类型。不同机型或系统,这些数据类型的数据在内存中所占空间的大小可能不同,因此如果用sizeof(数据类型)这个指令来获得它们的大小时,在不同的机子上运行可能会看到不一样的值。

计算机的数据都是建立在0与1之上的,称之为“位”,每一“位”要么是0,要么是1。1个字节是由8位组成,sizeof(数据类型)返回的数值单位以字节来计算,一个无符号的整数型,返回值为2的话,则是说明该数据类型在内存空间中占2个字节,也就是2*8=16位,一个这种数据类型的十进制数据的取值范围应该是0~2的16次方-1,也就是0~65535之间。而如果是一个2字节的有符号整型数据,16位中有1位是符号位,因此它的取值范围应在-2的15次方~2的15次方-1之间,也就是-32768~32767之间。

C++11引入了固定大小的整数类型,如int8_t, uint8_t, int32_t, uint32_t等。

浮点数类型 float

浮点数根据所占内存空间多少的不同而划分出了float, double, long double几种类型。

浮点数,即实数,可正可负,且有小数部分。一个4字节的浮点数取值范围在-3.4*10的38次方~3.4*10的38次方,可提供7位有效位,编译器不同,具体值可能也会有所不同。

为了设定浮点数的精度,可以使用库”iomanip”中的函数setprecision,在程序开头,需要先添加包含相关头文件的预处理指令。

#include <iomanip>

如果main函数里声明了一个float类型的变量f_num,并在进行除法后重新赋值,打印f_num的值前调用命名空间std中的setprecision(3),会将输出结果显示的浮点数数字个数限定为3,并且会继续影响以后使用cout输出流中其他运算结果的显示。

float** f_num=0.0;
f_num = 13/7.0;
cout<<"13/7.0="<<std::setprecision(3)<<f_num<<endl;
cout<<"14/3.0="<<14/3.0<<endl;

输出结果:

13/7.0=1.86
14/3.0=4.67

布尔类型 bool

bool flag= false;

布尔类型只有两种值:true或false,即真或者假。常用于条件判断、关系运算、逻辑运算等场合。

字符类型 char

char charOne='Y';

字符类型只能用来存储1个字符,单个字母和数字都能找到对应的整数,因此如果想声明一个char型的变量charOne,初始化它的值为Y,也可以按下面的方式声明:

char charOne=89; 

或者用十六进制转义字符表示,这里转义字符书写上是多个字符,实际在内存空间只占1个字节:

char charOne='\x59';