当前位置: 首页 > news >正文

现代C++特性(一):基本数据类型扩展

文章目录

  • 基础数据类型
  • long long (C++ 11)
  • numeric_limits()获取当前数据类型的最值
  • warning C4309: “=”: 截断常量值
  • 新字符类型char16_t和char32_t
  • Windows编程常用字符类型wchar_t
  • char8_t (C++ 20)


基础数据类型

C++中的基本类型是构建其他数据类型的基础,常见的基础类型包括整型,浮点型,字符型和布尔型:

  • 整型:用于表示整数,如 intshortlong 等。
  • 浮点型:用于表示带小数部分的数值,如 floatdouble 等。
  • 字符型:用于表示单个字符,如 char
  • 布尔型:用于表示逻辑值,只能取 truefalse
类型说明符等效类型通常位宽 (bits)最小范围 (bits)描述
char / signed charchar88单个字符,至少 8 位。
unsigned charunsigned char88无符号字符,至少 8 位。
short / short int / signed short / signed short intshort1616短整型,至少 16 位。
unsigned short / unsigned short intunsigned short1616无符号短整型,至少 16 位。
int / singed / signed intint3216整型,至少 16 位,但通常为 32 位
unsigned / unsigned intunsigned int3216无符号整型,至少 16 位,但通常为 32 位8。
long / long int /signed long /signed long intlong32 或 6432长整型,至少 32 位,具体取决于平台(例如,在 64 位系统上通常是 64 位)9。
unsigned long / unsigned long intunsigned long32 或 6432无符号长整型,至少 32 位,具体取决于平台10。
long long / long long intlong long6464非常长的整型,至少 64 位11。
unsigned long longunsigned long long6464无符号非常长的整型,至少 64 位12。
floatfloat32-单精度浮点数,通常为 32 位13。
doubledouble64-双精度浮点数,通常为 64 位14。
long doublelong double平台相关-扩展精度浮点数,位宽依赖于平台(通常为 80 或 128 位)15。
boolbool1-布尔值类型,存储 true 或 false,至少 1 位16。

long long (C++ 11)

C++ 11 引入标准的新类型。
无特殊声明时,声明的整数会被默认解释为int

long long x = 65536;   // 实际是将int型赋给long long
long long x = 65536LL; 

numeric_limits()获取当前数据类型的最值

C++中提供了获取数据类型最值的库函数 numeric_limits,通过类模板std::numeric_limits 提供了一种标准化方法来查询算术类型的各种属性。使用示例如下:

#include <iostream>
#include <limits>int main() {std::cout << "char is " << (std::is_signed<char>::value ? "signed" : "unsigned") << " on this system." << std::endl;std::cout << "Minimum value of char: " << static_cast<int>(std::numeric_limits<char>::min()) << std::endl;std::cout << "Maximum value of char: " << static_cast<int>(std::numeric_limits<char>::max()) << std::endl;return 0;
}
//char is signed on this system.
//Minimum value of char: -128
//Maximum value of char: 127

warning C4309: “=”: 截断常量值

整型溢出问题

char buffer = 0xFF;

执行如上代码时编译器会报warning C4309: “=”: 截断常量值
因为声明的0xFF会被解释为int型的255,而赋值给char类型最大值为127

新字符类型char16_t和char32_t

UTF编码相关

char16_t utf16c = u'好';
char32_t utf32c = U'好';char16_t utf16c[] = u'你好你好';
char32_t utf32c[] = U'你好你好';

Windows编程常用字符类型wchar_t

typedef const wchar_t* LPCWSTR;
BOOL PathFileExistsW(LPCWSTR pszPath);

char8_t (C++ 20)

char str[] = u8"test";	// C++17编译通过;C++20编译失败,需要char8_t
char c = u8'c';char8_t c8a[] = "test";	//C++20编译失败,需要char
char8_t c8 = 'c';
http://www.xdnf.cn/news/923491.html

相关文章:

  • Unity的日志管理类
  • 东芝Toshiba e-STUDIO2110AC打印机信息
  • 用电脑通过USB总线连接控制keysight示波器
  • csrf攻击学习
  • Java 8 Stream API 入门到实践详解
  • Robot Framework 一个通用的 自动化测试框架
  • 【DAY42】Grad-CAM与Hook函数
  • 大模型Agent智能体介绍和应用场景
  • SpiritTools:一款小而精的实用工具箱
  • nonlocal 与global关键字
  • BeckHoff--MES数据交互 MQ TRANCE API (MQ 追溯 API - 系统概述和命令参考)
  • YOLOv8 升级之路:主干网络嵌入 SCINet,优化黑暗环境目标检测
  • gawk 指令
  • NPOI Excel用OLE对象的形式插入文件附件以及插入图片
  • 元器件基础学习笔记——结型场效应晶体管 (JFET)
  • 实战二:开发网页端界面完成黑白视频转为彩色视频
  • 15-Oracle 23ai Vector Search Similarity Search-向量相似性和混合搜索-实操
  • Golang——10、日志处理和正则处理
  • 自制操作系统(五、重写引导部分和C语言的使用)
  • 【数据结构】详解算法复杂度:时间复杂度和空间复杂度
  • 【论文解读】DeepSeek-R1
  • 一款“短小精悍的”手机录屏软件
  • 【C++】类型转换
  • 抖音怎么下载视频?抖音怎么无水印下载别人的视频
  • 蓝凌的流程引擎队列分发器
  • Python whl安装包简介与制作完全指南
  • 【优选算法】前缀和
  • Windows 下端口占用排查与释放全攻略
  • LeetCode-413. 等差数列划分
  • Go深入学习延迟语句