【C++教程】C++中的基本数据类型

以下是 C++ 基本数据类型的定义、大小(常见实现)及其取值范围的总结表。需注意,具体大小可能因编译器和平台而异(如 32 位 vs 64 位系统),建议使用 sizeof()<climits><cfloat> 头文件中的宏获取具体值。


整数类型

类型 大小(字节) 取值范围(常见实现) 标准最小要求
signed char 1 -128 到 127 至少 8 位(-2⁷ 到 2⁷-1)
unsigned char 1 0 到 255 至少 8 位(0 到 2⁸-1)
short 2 -32,768 到 32,767 至少 16 位(-2¹⁵ 到 2¹⁵-1)
unsigned short 2 0 到 65,535 至少 16 位(0 到 2¹⁶-1)
int 4 -2,147,483,648 到 2,147,483,647 至少 16 位(通常为 32 位)
unsigned int 4 0 到 4,294,967,295 int 的无符号版本
long 4 或 8 -2³¹ 到 2³¹-1(4 字节)或更大 至少 32 位
unsigned long 4 或 8 0 到 2³²-1(4 字节)或更大 long 的无符号版本
long long 8 -9,223,372,036,854,775,808 到 ... 至少 64 位(-2⁶³ 到 2⁶³-1)
unsigned long long 8 0 到 18,446,744,073,709,551,615 0 到 2⁶⁴-1

字符类型

类型 大小(字节) 说明
char 1 可能是 signed charunsigned char(由编译器决定)
wchar_t 2 或 4 宽字符,支持更大字符集(如 Unicode)

浮点类型

类型 大小(字节) 取值范围(IEEE 754 常见值) 精度
float 4 ±1.18e-38 到 ±3.4e38 6-7 位小数
double 8 ±2.23e-308 到 ±1.79e308 15-16 位小数
long double 8, 12, 16 范围 ≥ double,具体依赖实现 通常 ≥ double

布尔类型

类型 大小(字节) 取值范围
bool 1(通常) truefalse

注意事项

  1. 平台依赖性

    • intlong 的大小可能因系统不同而变化(如 Windows 64 位中 long 为 4 字节,Linux 64 位中为 8 字节)。
    • 使用 sizeof(type) 直接获取当前平台的大小(如 sizeof(int))。
  2. 标准头文件

    • <climits> 包含整数类型的范围宏(如 INT_MAXLLONG_MIN)。
    • <cfloat> 包含浮点类型的范围宏(如 FLT_MAXDBL_EPSILON)。
  3. 固定宽度类型

    C++11 引入了 <cstdint> 中的固定大小类型(如 int32_tuint64_t),明确指定位数。


示例代码

cpp 复制代码
#include <iostream>
#include <climits>
#include <cfloat>

int main() {
    std::cout << "int 大小: " << sizeof(int) << " 字节" << std::endl;
    std::cout << "int 最大值: " << INT_MAX << std::endl;
    std::cout << "double 最小值: " << DBL_MIN << std::endl;
    return 0;
}

如果需要更精确的平台特定信息,请结合编译器和系统文档进行验证。

相关推荐
C66668884 分钟前
TCP/IP协议
开发语言·tcp/ip·计算机视觉·信息与通信
Lester_11015 分钟前
嵌入式学习笔记 - freeRTOS在程序开始在任务内创建任务的好处是什么
java·开发语言·freertos
愚润求学5 分钟前
【Linux】线程控制
linux·运维·开发语言·c++·笔记
泽02028 分钟前
C++之动态数组vector
java·开发语言·c++
stein_java1 小时前
springMVC-9数据格式化
java·开发语言
李少兄1 小时前
Java集合初始化:Lists.newArrayList vs new ArrayList()
java·开发语言·python
nbsaas-boot1 小时前
小团队如何落地 Scrum 模型:从 0 到 1 的实战指南
开发语言·架构
love530love1 小时前
【笔记】Windows系统部署suna基于 MSYS2的Poetry 虚拟环境backedn后端包编译失败处理
开发语言·人工智能·windows·笔记·python·numpy
黄雪超1 小时前
JVM——从JIT到AOT:JVM编译器的云原生演进之路
java·开发语言·jvm
逆风飞翔i1 小时前
简单工厂模式
c++·简单工厂模式