C++操作数的类型转换(一)

【C++】你必须掌握的4种类型转换 你必须掌握的4种类型转换:static_cast、reinterpret_cast、const_cast、dynamic_cast 阅读详情
 

在C++中,进行算术运算前通常需要对操作数进行类型转换,特别是对两个类型不同的操作数,往往要把它们转换成相同类型。算术运算的结果类型与转换后的操作数类型相同。

       C++的类型转化方式有两种:隐式转换和显式转换。隐式转换由编译程序按照某种预定的规则进行自动转换;显式转换由写程序的人在程序中用类型转换操作符明确地指出转换。

       当操作数的类型为算术类型或者枚举类型时,在进行算术运算前,编译程序将按照常规算术转换规则(usual arithmetic conversion)自动进行操作数类型转换,其转换规则如下:

a)       如果其中一个操作数类型为long double,则另一个转换成long double。

b)      否则,如果其中一个操作数的类型为double,则另一个转换成double。

c)      否则,如果其中一个操作数的类型为float,则另一个转换成float。

d)      否则,先对操作数进行整型类型提升转换(integral promotion),如果转换后操作数的类型不一致,则按(e)以后的类型再进行转换。整型提升转换规则是:

¨         对于char、signed char、unsigned char、short int、unsigned short int类型,如果int型能够表示它们的值,则这些类型转换成int,否则这些类型转换成unsigned int。

¨         bool型转换成int型,false为0,true为1。

¨         wchar_t和枚举类型转换成下列类型中第一个能表示其所有值的类型:int、unsigned int、long int、unsigned long int。

e)       如果其中一个操作数类型为unsigned long int,则另一个转换成unsigned long int。

f)       否则,如果一个操作数类型为long int,另一个操作数类型为unsigned int,那么如果long int能够表示unsigned int的所有值,则unsigned int转换成long int,否则两个操作数都转换成unsigned long int。

g)      否则,如果一个操作数类型为long int,则另一个操作数转换成long int。

h)      否则,如果一个操作数类型为unsigned int,则另一个操作数转换成unsigned int。

注:如果(h)仍不满足,则根据(d)的整型提升规则可知,两个操作数都已是int型了。

       隐式类型转换有时不能满足要求,而需要在程序中显式指出转换,即进行显式转换。显式转换又称强制类型转换,可以用强制类型转换操作符来实现,其格式为:

              <类型名>(<操作数>)   

或          

(<类型名>)<操作数>

注:

¨         从表示范围大的类型强制转换到表示范围小的类型,有时会丢失精度。

不管是显式转换还是隐式转换,都不会改变被转换的操作数的值,转换得到的结果将存储在临时的存储单元中。
cesium加载geotiff的 四种方法 本文介绍了在Cesium中加载GeoTIFF数据的两种主要方法。首先解析了核心前置知识,包括坐标系匹配、数据类型区分和性能优化。方法1详细演示了如何将RGB影像GeoTIFF转换为Cesium影像图层,包含从数据解析到Canvas转换的完整代码流程。方法2则针对高程数据(DEM)处理,展示了前端直接解析构建地形网格的方案。文章提供了完整的代码示例和关键实现要点,适用于卫星影像、专题图和数字高程模型等多种GeoTIFF数据类型在三维场景中的可视化需求。 阅读详情

相关推荐

双重机器学习 stata教程 手把手教学

双重机器学习(DDML)的stata教程

weixin_59030591的博客 1万+

C语言中算术运算的隐式类型转换规则

C语言中算术运算的隐式类型转换规则 由 James Hook 发表于 2011/01/14 / 标签: C语言, 学之初, 类型转换 / 评论: (0) 在C语言的算术运算中,如果两个操作数都是算术类型但具体类型不同,编译器会把它们都转为同一个类型再执行运算。这属于隐式(implicit)类型转换的一种。本以为这是个很简单的事情,但在回答别人问题的时候发现,具体的规则如何判断(

robertzhouxh的专栏 2047

手把手拆解固态电池成本:2030年真能比液态电池便宜30%吗?

本文深度解析固态电池成本结构,探讨2030年实现比液态电池便宜30%的可行性路径。通过拆解正极材料、负极材料和固态电解质的成本演变,分析关键技术对降本的影响,并预测产业链协同效应下的成本优化趋势。文章指出,在材料创新、设备国产化和政策支持等多重因素推动下,固态电池有望在2030年实现显著降本目标。

kite3的博客 404

C/C++数据类型转换

  在C/C++中,整型、单精度、双精度及字符型数据可以进行混合运算,即双目运算符两边的操作数类型可以不同。当表达式中不同类型的数据进行运算时,会发生数据类型的转换。C/C++中有两种类型转换的方法:自动类型转换和强制类型转换。 自动类型转换   所谓自动类型转换是指在不同类型数据进行混合运算时,系统会自动进行数据类型的转换。对同一表达式中不同类型的数据自动进行类型转换是由C/C++编译系统自动完成的,遵循一定的规则,即:在运算时,不同类型的数据要先转换成同一类型的数据,然后进行计算,所有操作数都是向“所占

Jacques/CS的博客 607

coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?

🏆本文收录于《优快云问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 2669

Xilinx FPGA平台DDR3设计保姆式教程(3)MIG IP核使用教程及DDR读写时序

干货来了,用DDR搬砖,只需要会用IP就好,Xilinx官方YYDS! ----------------------------------------------------------------------------------------------------------------- 汇总篇: Xilinx平台DDR3设计保姆式教程(汇总篇)——看这一篇就够了 ----------------------------------------------------------...

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 2万+

c++表达式详细介绍

C++ 表达式涵盖了从简单的算术运算到复杂的逻辑决策的多种方面。初学者需要首先了解表达式的基础概念,例如操作符、操作数、以及它们如何组合来形成有意义的指令。接下来,掌握不同类型的操作符(如算术、关系、逻辑操作符)和它们的优先级与结合性,对于编写正确无误的代码至关重要。此外,高级主题如赋值表达式、条件表达式和类型转换,提供了更多的灵活性和表达能力。理解这些概念对于高效利用 C++ 的强大功能来说是必不可少的。

shopeeai的博客 2686

基于STM32设计的水下水质检测装置(微信小程序)(205)

本项目设计了一款基于STM32微控制器为核心的水下水质检测设备,该设备具有高度集成化、智能化的特点,能够实时监测水深、温度、浊度及溶解性总固体(TDS)等关键水质参数,并通过4G网络将数据上传至腾讯云IOT物联网平台,实现远程监控和数据分析。同时,为了便于操作和移动观测,还配套开发了微信小程序,用户可通过微信小程序实时查看并控制设备的各项功能,如调整下潜深度等。

1252

C++学习——位操作

C++基础操作之位运算。

mitongxue的博客 2976

Qt6.10 | Qt Bluetooth 蓝牙

本文介绍了QtBluetooth模块的功能和使用方法,包括蓝牙API概述、构建配置(CMake/qmake)、权限管理、平台支持(Linux/macOS特殊处理)、日志设置及许可信息。重点说明Linux平台的后端选择机制,以及macOS上的依赖限制。最后提及蓝牙聊天示例,展示RFCOMM协议通信的实现。全文提供了蓝牙开发的技术要点和注意事项。

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 400

轻量化部署实战:C#上位机集成AI模型的3种方案深度对比(ML.NET/ONNX/TensorFlow.NET)

C#上位机部署AI模型,核心不是“选最强大的方案”,而是“选最适配的方案”——工控机的低配置、高稳定性需求,决定了“轻量化”和“部署简单”是选型的首要原则。回顾3种方案:ML.NET:原生、轻量化、零依赖,适合传统ML场景,低配置工控机首选;ONNX Runtime:通用、平衡、易落地,适合深度学习场景,工业落地首选;TensorFlow.NET:强大、灵活、纯C#,适合复杂模型,高配置工控机首选。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 364

C/C++位操作、位运算

在C语言中,可以单独操控变量的位(bit),一般高级语言不会处理这级别的细节,C在提供高级语言便利的同时,还能为汇编语言所保留的级别上工作,这使其成为编写设备驱动程序和嵌入式代码的首选语言。 二进制整数(binary) 通常,1字节包含8位,C语言用**字节**(byte)表示储存系统字符集所需的大小,从左往右,分别给这8位分别编号7~0,在一字节中,编号是7的位被称为高阶位,编号为0的位被称为低阶位。该字节能表达的最大数字:1111 1111,为255,最小值为:0000 0000,为0,所..

DayDayUp 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

为什么整数用浮点型输出是零_1.9 C++混合运算 | 输出整数字符浮点数的值

各类数值型数据间的混合运算在C++的表达式中会常常遇到不同数据类型之间的运算,运算过程中,当某个二元运算符两边的操作数类型不同但属于类型相容时,系统先将精度低的操作数变换到与另一个操作数精度相同,然后再进行运算。比如整数+浮点数-字符9在运算之前,不同的数据类型要先转换为同一数据类型,然后再进行运算。先执行9+1.5,运算之前会将这两个数转换成double类型的值,此时值应该时10.5然后执行10...

weixin_39600837的博客 667

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

不同类型的除数和被除数取余 C++

在写程序时遇到这样一个问题 int main() { unsigned int u = 10; int b = -34; cout &lt;&lt; b%u &lt;&lt; endl;//结果为2 b = 34; cout &lt;&lt; b%u &lt;&lt; endl;//结果为4 system("pause"); } 按正常逻辑,第一个是-4,第二个是4,但是显然结果...

qq_34489443的博客 1194

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

c++基础9运算中的类型

c++基础9运算中的类型

qq_37755459的博客 850

【C++】—— C++的类型转换

C++的类型转换详解

m0_56069910的博客 3674

【C++】类型转换

介绍C++中的类型转换,static_cast、reinterpret_cast、const_cast、dynamic_cast

YoungMLet的博客 2336

【C++】 类型转换深度探索:揭开类型转换的奥秘

详细讲解了c++四种类型转换的原理和实践

You build it, you run it 2411

[cpp进阶]C++类型转换

当我们在函数中用父类的指针或引用接受参数时,接收的参数有可能指向父类对象也有可能指向子类对象,当接收的参数指向父类对象时,不需要做任何处理,当接收的参数指向子类对象时,有时就需要将该对象转换为原来的子类对象。

weixin_53027918的博客 1143

C++的类型转换

在自定义类型中重载string,这里涉及到文件的写入,string的str转c_str,弄成char类型才能插入直接重载int和bool的,就支持A转int值和bool了。这里加explcit不影响转换,更支持了与其他的相反,不加explcit,A不能转double,只能转int,加了就可以了。放宽了标准C++为了加强类型转换的可视性,引入了四种命名的强制类型转换操作符:static_cast用于非多态类型的转换(静态转换),编译器隐式执行的任何类型转换都可用。

ljw的博客 2559

【C++11】类型转换

在C语言中我们学习了类型转换,如 int 遇到 double 类型时 int 类型就会类型转换成 double,这些都是比较简单的类型转换,但是到 C++ 时,日期类需要转换成其它类型那该如何?面对这个问题,在C++11中完成这个补丁,使其C++在相关类也可以类型转换,那C++中如何实现类型转换呢?

AAlykk的博客 1582

【C++】C++的类型转换

本篇文章概要性地介绍了C语言与C++中的类型转换机制。首先,回顾了C语言中的类型转换方式。然后,阐述了C++为何需要四种强制类型转换(static_cast、reinterpret_cast、const_cast、dynamic_cast),以适应其面向对象的特性及复杂的类层次结构。接着,详细说明了这四种强制类型转换的使用场景与特点。此外,简要介绍了RTTI(运行时类型识别)的概念。希望本篇文章对大家学习C++类型转换有所帮助。

是阿建吖! 900

[C++][C++类型转换]详解

[C++][C++类型转换]详解

SnowK博客 4707

Cpp||类型转换

Cpp类型转换 文章目录Cpp类型转换1:c语言中的类型转换1.1:隐式类型转换:意义相似的类型1.2: 强制类型转换:意义差距较大的类型2:C++中的类型转换2.1:static_cast2.2:reinterpret_cast2.3:const_cast2.4:dynamic_cast 1:c语言中的类型转换 1.1:隐式类型转换:意义相似的类型 int main(){ int a=2; ...

Template Code 851

【C++高阶(九)】C++类型转换以及IO流

本篇文字着重介绍了C++的类型转换方式以及C++的IO流,最后拓展了string stream的相关概念

杭电码农-NEO的博客 3642
上一篇: Understanding ELF using readelf and objdump
下一篇: The Standard C Library
mindview
博客等级 码龄19年 7粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值