【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;
}

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

相关推荐
草莓熊Lotso4 小时前
Linux 文件描述符与重定向实战:从原理到 minishell 实现
android·linux·运维·服务器·数据库·c++·人工智能
傻乐u兔4 小时前
C语言进阶————指针4
c语言·开发语言
大模型玩家七七4 小时前
基于语义切分 vs 基于结构切分的实际差异
java·开发语言·数据库·安全·batch
历程里程碑4 小时前
Linux22 文件系统
linux·运维·c语言·开发语言·数据结构·c++·算法
牛奔5 小时前
Go 如何避免频繁抢占?
开发语言·后端·golang
寻星探路9 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
lly20240611 小时前
Bootstrap 警告框
开发语言
2601_9491465312 小时前
C语言语音通知接口接入教程:如何使用C语言直接调用语音预警API
c语言·开发语言
曹牧12 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
在路上看风景12 小时前
19. 成员初始化列表和初始化对象
c++