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

news2025/6/8 8:19:46

文章目录

  • 基础数据类型
  • 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.coloradmin.cn/o/2403914.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++进阶篇】C++11新特性(下篇)

C函数式编程黑魔法&#xff1a;Lambda与包装器实战全解析 一. lambda表达式1.1 仿函数使用1.2 lambda表达式的语法1.3 lambda表达式使用1.3.1 传值和传引用捕捉1.3.2 隐式捕捉1.3.3 混合捕捉 1.4 lambda表达式原理1.5 lambda优点及建议 二. 包装器2.1 function2.2 bind绑定 三.…

全生命周期的智慧城市管理

前言 全生命周期的智慧城市管理。未来&#xff0c;城市将在 实现从基础设施建设、日常运营到数据管理的 全生命周期统筹。这将避免过去智慧城市建设 中出现的“碎片化”问题&#xff0c;实现资源的高效配 置和项目的协调发展。城市管理者将运用先进 的信息技术&#xff0c;如物…

echarts柱状图实现动态展示时报错

echarts柱状图实现动态展示时报错 1、问题&#xff1a; 在使用Echarts柱状图时&#xff0c;当数据量过多&#xff0c;x轴展示不下的时候&#xff0c;可以使用dataZoom实现动态展示。如下图所示&#xff1a; 但是当鼠标放在图上面滚动滚轮时或拖动滚动条时会报错&#xff0c;…

408第一季 - 数据结构 - 线性表

只能用C/C&#xff01; 顺序表 闲聊 线性表的逻辑顺序和物理顺序相同 都是1234 顺序表的优点&#xff1a; 随机访问&#xff0c;随机访问的意思是访问的时间 和位置没有关系&#xff0c;访问下标1和100一样的&#xff0c;更深层就是直接计算 a100 * 数组大小&#xff0c;随便…

第23讲、Odoo18 邮件系统整体架构

目录 Odoo 邮件系统整体架构邮件发送方式邮件模板配置SMTP 邮件服务器配置邮件发送过程开发中常见邮件发送需求常见问题排查提示与最佳实践完整示例&#xff1a;审批通过自动发邮件门户表单自动邮件通知案例邮件队列与异步发送邮件添加附件邮件日志与调试多语言邮件模板邮件安…

HarmonyOS:Counter计数器组件

一、概述 计数器组件&#xff0c;提供相应的增加或者减少的计数操作。 说明 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 二、属性 除支持通用属性外&#xff0c;还支持以下属性。 enableInc enableInc(value: b…

sqlsugar WhereIF条件的大于等于和等于查出来的坑

一、如下图所示&#xff0c;当我用 .WhereIF(input.Plancontroltype > 0, u > u.Plancontroltype (DnjqPlancontroltype)input.Plancontroltype) 这里面用等于的时候&#xff0c;返回结果一条数据都没有。 上图中生成的SQL如下&#xff1a; SELECT id AS Id ,code AS …

Pandas 技术解析:从数据结构到应用场景的深度探索

序 我最早用Python做大数据项目时&#xff0c;接触最早的就是Pandas了。觉得对于IT技术人员而言&#xff0c;它是可以属于多场景的存在&#xff0c;因为它的本身就是数据驱动的技术生态中&#xff0c;对于软件工程师而言&#xff0c;它是快速构建数据处理管道的基石&#xff1…

数据库系统概论(十七)超详细讲解数据库规范化与五大范式(从函数依赖到多值依赖,再到五大范式,附带例题,表格,知识图谱对比带你一步步掌握)

数据库系统概论&#xff08;十七&#xff09;超详细讲解数据库规范化与五大范式&#xff08;从函数依赖到多值依赖&#xff0c;再到五大范式&#xff0c;附带例题&#xff0c;表格&#xff0c;知识图谱对比带你一步步掌握&#xff09; 前言一、为什么需要规范化1. 我们先想一个…

并发编程实战(生产者消费者模型)

在并发编程中使用生产者和消费者模式能够解决绝大多数的并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序整体处理数据的速度。 生产者和消费者模式&#xff1a; 在线程的世界中生产者就是产生数据的线程&#xff0c;而消费者则是消费数据的线程。在多线程开…

git小乌龟不显示图标状态解决方案

第一步 在开始菜单的搜索处&#xff0c;输入regedit命令&#xff0c;打开注册表。 第二步 在注册表编辑器中&#xff0c;找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers 这一项。 第三步 让Tortoise相关的项目排在前…

获取 OpenAI API Key

你可以按照以下步骤来获取 openai.api_key&#xff0c;用于调用 OpenAI 的 GPT-4、DALLE、Whisper 等 API 服务&#xff1a; &#x1f9ed; 获取 OpenAI API Key 的步骤&#xff1a; ✅ 1. 注册或登录 OpenAI 账号 打开 https://platform.openai.com/ 使用你的邮箱或 Google/…

【Android基础回顾】五:AMS(Activity Manager Service)

Android 的 AMS&#xff08;Activity Manager Service&#xff09;是 Android 系统中的核心服务之一&#xff0c;负责管理整个应用生命周期、任务栈、进程和四大组件&#xff08;Activity、Service、BroadcastReceiver、ContentProvider&#xff09;的运行。它运行在系统进程 s…

pycharm中提示C++ compiler not found -- please install a compiler

1.最近用pycharm编译一个开源库,编译的依赖c compiler 2.单单使用pycharm编译&#xff0c;编译器报错C compiler not found – please install a compiler 3.需要在配置环境中引入对应库 4.从新编译后没有提示:C compiler not found – please install a compiler错误。

一站式直播工具:助力内容创作者高效开启直播新时代

近年来&#xff0c;随着互联网技术的不断进步和短视频、直播行业的爆发式增长&#xff0c;越来越多的企业和个人投入到直播电商、互动娱乐、在线教育等场景。直播运营过程中&#xff0c;涉及到数据统计、弹幕互动、流程自动化、内容同步等诸多环节。如何提升运营效率、减少人工…

以智能管理为基础,楼宇自控打造建筑碳中和新路径

在全球气候变化的严峻形势下&#xff0c;“碳中和”已成为各国发展的重要战略目标。建筑行业作为能源消耗与碳排放的“大户”&#xff0c;其运行阶段的能耗占全社会总能耗近40%&#xff0c;碳排放占比与之相当&#xff0c;实现建筑碳中和迫在眉睫。传统建筑管理模式下&#xff…

day029-Shell自动化编程-计算与while循环

文章目录 1. read 交互式初始化变量1.1 案例-安装不同的软件1.2 案例-比较大小 2. 计算2.1 bc2.2 awk2.3 expr2.4 let2.5 案例-计算内存的空闲率2.6 案例-检查域名过期时间和https整数过期时间 3. 循环3.1 循环控制语句3.2 for循环-c语言格式3.3 while循环3.3.1 案例-猜数字3.3…

Linux命令基础(2)

su和exit命令 可以通过su命令切换到root账户 语法&#xff1a;su [-] 用户名 -符号是可选的&#xff0c;表示是否在切换用户后加载环境变量&#xff0c;建议带上 参数&#xff1a;用户名&#xff0c;表示要切换的用户&#xff0c;用户名可以省略&#xff0c;省略表示切换到ro…

vue3 + vite实现动态路由,并进行vuex持久化设计

在后台管理系统中&#xff0c;如何根据后端返回的接口&#xff0c;来动态的设计路由呢&#xff0c;今天一片文章带你们解 1、在vuex中设置一个方法 拿到完整的路由数据 const state {routerList: []}; const mutations { dynameicMenu(state, payload) {// 第一步 通过glob…

学习路之php--性能优化

一、php周边优化 二、代码级优化 变量管理‌ 及时unset()释放大数组/对象&#xff0c;减少内存占用局部变量访问速度比全局变量快约2倍&#xff0c;优先使用局部变量大数组采用引用传递&#xff08;&$var&#xff09;避免内存 循环优化‌ 预计算循环次数&#xff1a; …