☰
C++入门:数据类型全解析
2026/10/11 1:39:20 网站建设 项目流程

目录

一.数据类型

1.字符型

2.整型

3.浮点型

4.布尔类型

5. signed 和 unsigned


引言

数据类型是 C++ 编程的基石,也是初学者接触这门语言时最先需要掌握的核心概念之一。本文将从零开始,系统介绍 C++ 中的基本数据类型,包括字符型(char)、整型(int)、浮点型(float、double)、布尔类型(bool)以及 signed 和 unsigned 修饰符。理解这些类型,不仅有助于我们正确声明变量、合理分配内存,更能帮助我们写出健壮、高效的代码,为后续学习变量、常量、运算符乃至面向对象编程打下坚实基础。

在阅读本文时,建议按照章节顺序循序渐进:先了解每种类型的基本含义和用法,再通过代码示例加深理解,最后结合数据类型的长度和取值范围,体会不同类型在实际开发中的适用场景。希望本文能帮助你建立起对 C++ 数据类型清晰而完整的认识。

一.数据类型

数据类型,顾名思义就是数据的类型。C++ 中提供了丰富的数据类型来描述生活中各种各样的数据,比如:可以使用整型来描述整数,使用浮点型描述小数,使用字符型来描述字符。

所谓类型,就是具有相似的共同特征,编译器只有知道了数据的类型,才知道怎么操作数据。

1.字符型

char// character 的缩写

在键盘上可以敲出各种字符,如:a,q,@,# 等,这些符号都被称为字符,字符是用单引号括起来的,如:'b','@'。为了能说明这些字符,给他们抽象出一种类型,就是字符型 char。

ASCII 编码我们知道在计算机中所有的数据都是以二进制的形式存储的,那这些字符在内存中分别以什么样的二进制存储的呢?如果我们每个人自己给这些字符中的每个字符编一个二进制序列,这个叫做编码,为了方便大家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了一个标准 ASCII 编码,C 语言中的字符就遵循了 ASCII 编码的方式。

• ASCII 码值从 0~31 这 32 个字符是不可打印字符,无法打印在屏幕上观察。

• 字符 A~Z 的 ASCII 码值从 65~90。

• 字符 a~z 的 ASCII 码值从 97~122。

• 对应的大小写字符(a 和 A)的 ASCII 码值的差值是 32。

• 数字字符 0~9 的 ASCII 码值从 48~57。

• 换行 \n 的 ASCII 值是:10。

• ASCII 码值从 0~31 这 32 个字符是不可打印字符,无法打印在屏幕上观察。

2.整型

整型类型是对所有整数的抽象,为了能对整数形成统⼀的类型标识,就有整型;在 C 和 C++ 中整型被分为四⼤类:

1 short [int]// 短整型

2 int// 整型

3 long [int]// 长整型

4 long long [int]// 更长的整型

3.浮点型

浮点型是对所有实数(⼩数)的抽象,为了能对实数进⾏统⼀的类型标识,就有了浮点型。浮点型有三种:

1 float//单精度浮点型

2 double//双精度浮点型

3 long double//更长的双精度浮点型

4.布尔类型

C++ 有⼀种类型叫:bool(布尔类型),布尔类型的变量的值可以是 false,这种类型的变量专⻔⽤来表⽰真或假的。当然在 C 和 C++ 中,0 表⽰假,⾮ 0 表⽰真,有时候不使⽤ true 或 bool 类型也能表达相同的逻辑。

bool

5. signed 和 unsigned

signed 和 unsigned 关键字修饰字符型和整型类型。

signed 关键字,表⽰⼀个类型带有正负号,包含负值;⽐如:温度、银⾏存款。

unsigned 关键字,表⽰该类型不带有正负号,只能表⽰零和正整数,⽐如:年龄。

有了 signed 和 unsigned 的修饰,字符和整型类型其实更加丰富,可以有以下这些:

对于 int 默认是有正负号的,也就是说 int 等于 signed int。

int 类型也可以不带正负号,只表⽰⾮负整数。这时就必须使⽤关键字 unsigned 声明变量。

变量声明为 unsigned 的好处是,同样⻓度的内存能够表⽰的最⼤整数值,增⼤了⼀倍。⽐如,16 位的 signed short int 的取值范围是:-32768~32767,最⼤是 32767;而 unsigned short int 的取值范围是:0~65535,最⼤值增⼤到了 65535。

unsigned int ⾥⾯的 // 有符号整型的最⼤值 int 可以省略,所以上⾯的变量声明也可以写成下⾯这样。

字符类型 char 也可以设置 signed 和 unsigned。

注意,char 类型到底是 signed char 还是 unsigned char,由编译器决定。大部分的编译器上 char 就是 signed char。这就是说,char 不等同于 unsigned char,它有可能是signed char,也有可能是unsigned char。这⼀点与 int 不同,int 就是等同于 signed int。

6.数据类型的长度

每种数据类型都有对应的长度,使用不同的数据类型能够创建出长度不同的变量,变量长度的不同,储存的数据范围就有所差异。

6.1 sizeof操作符

sizeof是一个关键字,也是一个操作符,专门用来计算不同数据类型的长度,单位是字节。

sizeof的操作数可以是类型,也可以是变量名或表达式,sizeof的操作数如果不是类型,而是表达式的时候,可以省略后面的括号。

sizeof (类型) sizeof 表达式
6.2计算各数据类型的长度

该如何理解这些数据类型的长度呢?其实我们使用这些数据类型可以向内存申请空间(就是创建变 量),不同的数据类型⼀次性申请的空间大小是有差异的。你可以这样理解:

7.各类型的取值范围

前面我们了解到了各类型变量的长度之间有所差异,这个差异又决定了这种变量能存储的值的大小。

其实每种数据类型都有自己的取值范围,也就是存储的数值的最大值和最小值的区间,下面是不同数据类型的取值范围。

8.typedef

在C++中有一个关键字是用来给类型从命名的。当有一个类型名字比较复杂,就可以重新命名简化。使用方式如下:

typedef 旧类型名 新类型名;

例如:

typedef unsigned int uint; typedef unsigned long ulong; typedef unsigned long long ull;

二.变量和常量

1.变量的创建

了解了数据类型,我们使用类型做什么呢?

类型是用来创建变量的。什么是变量呢?可以变化的值就是变量,不变的是就是常量。

变量创建的语法形式是这样的:

date_type name; | | | | 数据类型 变量名
int age; //整型变量 char ch; //字符变量 double weight; //浮点型变量

变量的命名规则:

  • 变量名只能由字母、数字和下划线组成,且必须以字母或下划线开头。
  • 变量名不能以纯数字开头,也不能包含特殊字符。
  • 变量名不能使用关键字,如int, char, if等。
  • 变量名应具有意义,有助于理解变量的用途和含义。
  • 变量名应简单明了,避免过长。
  • 变量名要区分大小写,例如myvariable和myVariable被视为两个不同的变量。

2.变量的初始化

在变量创建时给一个值,就是初始化。

int age = 10; char ah = 'a'; double PI = 3.14;

3.变量的分类

全局变量:在大括号外部定义的变量,使用范围更广。

局部变量:在大括号内部定义的变量,使用范围比较局限,只能在自己的局部范围内使用。

当全局变量和局部变量同名时,优先使用局部变量。

  • 全局变量:全局变量通常在定义时就被初始化,如果没有明确指定初始值,它们通常会被初始化为0。
  • 局部变量:局部变量通常不会自动初始化。它们需要在使用之前明确地赋值或初始化。如果没有初始化,它们的值将是未定义的,使用未初始化的局部变量可能会导致不可预测的行为或运行时错误,因此局部变量建议初始化。

4.常量

常量就是不能改变的值,通常我们会用到三种常量:

  • 字面常量
  • #define 定义的常量
  • const 定义的常量
4.1字面常量

整型常量:100,512,0x123

字符常量:'a'

浮点型常量:3.14,1E6

4.2 #define定义的常量

有时候也会用#define来定义常量,比如:

#define 常量名 内容
#include <iostream> using namespace std; #define M 100; #define CH 'a'; #define PI 3.14; int main(){ cout << M << endl; cout << CH << endl; cout << PI << endl; return 0; }

上述的M,CH,PI都是常量,使用#define定义常量时不关注类型,只关注常量的名字和值。

4.3 const定义常量

C++中还可以用const来定义常量,这种常量会有具体的类型。语法如下:

const 常量类型 常量名 = 常量值; const int PI = 3.14;

习惯上,我们把常量的名字一般会写成大写,而普通变量的名字不会全大写,这样就可以做一个区分。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询