梦想不会自己发光,真正闪耀的是那个为梦狂奔的你。献给知行的孩子们!(Eric.He著)
本教程将全面讲解C++核心标准数据类型,包括整型、实型、字符型、布尔型的定义、特性、使用场景及注意事项,帮助你掌握C++基础数据类型的核心用法。
C++作为静态类型语言,要求所有变量在使用前必须声明数据类型。数据类型决定了:
C++标准数据类型分为四大类:
| 类型分类 | 具体类型 | 核心用途 |
|---|---|---|
| 整型 | short、int、long、long long、unsigned系列 | 存储整数(正数、负数、0) |
| 实型 | float、double、long double | 存储小数或科学记数法表示的数值 |
| 字符型 | char | 存储单个字符(字母、数字、符号) |
| 布尔型 | bool | 存储逻辑值(真/假) |
整型用于存储没有小数部分的整数,根据占用内存大小和符号属性分为有符号整型signed和无符号整型unsigned,具体大小受操作系统和编译器影响(以下为C++标准最小要求)。
#include <iostream>
using namespace std;
int main() {
short age = 18; // 定义短整型变量
short score = 95; // 范围内的整数
// short bigNum = 40000; // 错误:超出短整型取值范围,会溢出
cout << "年龄:" << age << endl;
cout << "短整型字节数:" << sizeof(short) << endl; // 输出2(多数系统)
return 0;
}
#include <iostream>
using namespace std;
int main() {
int num = 100000; // 定义整型变量
int count = 5000; // 常规整数存储
cout << "数值:" << num << endl;
cout << "整型字节数:" << sizeof(int) << endl; // 输出4(多数系统)
return 0;
}
#include <iostream>
using namespace std;
int main() {
long timestamp = 1718000000; // 时间戳(秒)
cout << "时间戳:" << timestamp << endl;
cout << "长整型字节数:" << sizeof(long) << endl; // 4或8(系统决定)
return 0;
}
#include <iostream>
using namespace std;
int main() {
long long bigId = 1234567890123456LL; // 后缀LL表示long long类型
cout << "超大ID:" << bigId << endl;
cout << "超长整型字节数:" << sizeof(long long) << endl; // 输出8
return 0;
}
无符号整型仅存储非负整数(0和正数),取值范围是对应有符号类型的正数部分翻倍,关键字为unsigned + 对应整型:
| 类型 | 关键字 | 内存大小 | 取值范围 | 适用场景 |
|---|---|---|---|---|
| 无符号短整型 | unsigned short | 2字节 | 0 ~ 65535 | 存储非负小整数(如数量、索引) |
| 无符号整型 | unsigned int | 4字节 | 0 ~ 4294967295 | 存储非负常规整数(如长度、大小) |
| 无符号长整型 | unsigned long | 4/8字节 | 0 ~ 4294967295(4字节)/ 0~18446744073709551615(8字节) | 存储非负长整数 |
| 无符号超长整型 | unsigned long long | 8字节 | 0 ~ 18446744073709551615 | 存储超大非负整数 |
#include <iostream>
using namespace std;
int main() {
unsigned int length = 5000000; // 无符号整型,存储长度
unsigned short count = 60000; // 无符号短整型,超出有符号范围但合法
// unsigned int neg = -10; // 错误:无符号类型不能存储负数
cout << "长度:" << length << endl;
cout << "计数:" << count << endl;
return 0;
}
实型(浮点型)用于存储包含小数部分的数值,也可存储科学记数法表示的数值,分为单精度、双精度、长双精度三种。
科学记数法用于表示极大或极小的数值,格式为:尾数e/E指数(如1.23e5表示1.23×10⁵,1.23e-5表示1.23×10⁻⁵)。
#include <iostream>
using namespace std;
int main() {
double distance = 1.5e9; // 1.5×10⁹(15亿)
double tinyNum = 2.3e-6; // 2.3×10⁻⁶(0.0000023)
cout << "距离:" << distance << endl;
cout << "小数:" << tinyNum << endl;
return 0;
}
#include <iostream>
using namespace std;
int main() {
float height = 1.75f; // 后缀f表示float类型(否则默认double)
float weight = 65.5f;
cout << "身高:" << height << "米" << endl;
cout << "单精度字节数:" << sizeof(float) << endl; // 输出4
return 0;
}
#include <iostream>
#include <iomanip> // 用于设置输出精度
using namespace std;
int main() {
double price = 99.99; // 金额(双精度)
double pi = 3.1415926535; // 圆周率(高精度)
cout << "价格:" << price << endl;
cout << "圆周率(10位精度):" << fixed << setprecision(10) << pi << endl;
cout << "双精度字节数:" << sizeof(double) << endl; // 输出8
return 0;
}
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
long double preciseNum = 1234567890.1234567890L; // 后缀L表示long double
cout << "高精度数值:" << fixed << setprecision(15) << preciseNum << endl;
cout << "长双精度字节数:" << sizeof(long double) << endl; // 输出10或16
return 0;
}
字符型用于存储单个字符,占用1字节内存,本质是存储字符对应的ASCII编码值(整数)。
ASCII(美国信息交换标准代码)是字符与整数的映射规则,范围0~127,包含:
| 字符 | ASCII值 | 字符 | ASCII值 |
|---|---|---|---|
| '0' ~ '9' | 48 ~ 57 | 'A' ~ 'Z' | 65 ~ 90 |
| 'a' ~ 'z' | 97 ~ 122 | 空格 | 32 |
| 换行('\n') | 10 | 回车('\r') | 13 |
#include <iostream>
using namespace std;
int main() {
char ch = 'A'; // 存储字符A
cout << "字符:" << ch << endl;
cout << "ASCII值:" << (int)ch << endl; // 强制转换为整数,输出65
ch = 97; // 直接赋值ASCII值,对应字符a
cout << "字符:" << ch << endl;
return 0;
}
转义字符以反斜杠\开头,用于表示无法直接输入的特殊字符,常见转义字符如下:
| 转义字符 | 含义 | ASCII值 |
|---|---|---|
| \n | 换行符 | 10 |
| \t | 制表符(Tab) | 9 |
| \\ | 反斜杠 | 92 |
| \' | 单引号 | 39 |
| \" | 双引号 | 34 |
| \r | 回车符 | 13 |
| \b | 退格符 | 8 |
#include <iostream>
using namespace std;
int main() {
cout << "姓名:\t张三\n年龄:\t18" << endl; // \t制表符,\n换行符
cout << "路径:C:\\Program Files\\C++" << endl; // \\表示反斜杠
cout << "他说:\"Hello C++!\"" << endl; // \"表示双引号
return 0;
}
布尔型用于存储逻辑值,仅有两个取值:真(true)和假(false),占用1字节内存。
#include <iostream>
using namespace std;
int main() {
bool isAdult = true; // 标记是否成年
bool hasPassed = false; // 标记是否通过考试
cout << "是否成年:" << boolalpha << isAdult << endl; // boolalpha输出true/false
cout << "是否通过:" << boolalpha << hasPassed << endl;
// 布尔型与整数的转换
int num = isAdult; // true转换为1
cout << "true对应整数:" << num << endl;
isAdult = 0; // 0转换为false
cout << "0转换为布尔值:" << boolalpha << isAdult << endl;
return 0;
}
掌握C++标准数据类型是编写高效、稳定代码的基础,需根据实际业务场景选择合适的类型,避免内存浪费和数据错误。