强制类型转换简介

强制类型转换简介
强制类型转换
操作数的类型不同,而且不属于基本数据类型时,经常需要强制类型转换,将操作数转化为所需要的类型。强制类型转换具有两种形式,称为显式强制转换和隐式强制类型转换。强制类型转换不改变原来数据的类型。
C++常用的强制类型转换函数有:const_cast,static_cast,reinterpreter_cast和dynamic_cast

强制类型转换方式

1、显式强制类型转换
C中显式强制类型转换很简单,格式如下:
TYPE b = (TYPE) a;
其中,TYPE为类型描述符,如int,float等。经强制类型转换运算符运算后,返回一个具有TYPE类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未改变,例如:
int n=0xab65;
char cChar=(char)n;
上述强制类型转换的结果是将整型值0xab65的高端一个字节删掉,将低端一个字节的内容作为char型数值赋值给变量cChar,而经过类型转换后nVar的值并未改变。
C++中强制类型转换函数有4个:const_cast(用于去除const属性),static_cast(用于基本类型的强制转换),dynamic_cast(用于多态类型之间的类型转换),reinterpreter_cast(用于不同类型之间的指针之间的转换,最常用的就是不同类型之间函数指针的转换)。  
2、隐式强制类型转换
隐式类型转换发生在赋值表达式和有返回值的函数调用表达式中。在赋值表达式中,如果赋值符左右两侧的操作数类型不同,则将赋值符右边操作数强制转换为赋值符左侧的类型数值后,赋值给赋值符左侧的变量。在函数调用时,如果return后面表达式的类型与函数返回值类型不同,则在返回值时将return后面表达式的数值强制转换为函数返回值类型后,再将值返回,如:
int nVar;
double dVar=3.88;
nVar=dVar;//执行本句后,nVar的值为3,而dVar的值仍是3.88
类型转换:
1.自动类型转换
2.强制类型转换
自动类型转换分两种情况:1,不同类型的数据进行运算时,系统会自动将运算优先级别低的转换成级别高的,结果和运算级别高的数据类型一样。2,赋值运算符两边类型不一样时,系统会自动将右侧表达式的类型转换成左侧的变量类型,然后再赋值
强制类型转换:
如:(int)3.1415   //就是取整数部分
(int)a%10  //取a的个位数
若a是int型,取a的平方根就是  sqrt((double)a)  。
3、隐式自动类型转换:
C++语言编译系统提供的内部数据类型的隐式自动转换规则如下:
1.执行算术运算时,低类型(短字节)可以转换为高类型(长字节);例如: int型转换成double型,char型转换成int型,等等;
2.赋值表达式中,等号右边表达式的值的类型自动隐式地转换为左边变量的类型,并赋值给它;
3.函数调用时,将实参的值传递给形参,系统首先会自动隐式地把实参的值的类型转换为形参的类型,然后再赋值给形参;
4.函数有返回值时,系统首先会自动隐式地将返回表达式的值的类型转换为函数的返回类型,然后再赋值给调用函数返回;
三、单参构造函数具有类型转换功能:
实际应用中,当一个类定义中提供了单个参数的构造函数时,该类便提供了一种将其它数据类型的数值或变量转换为用户所定义数据类型的方法;因此,可以说,单个参数的构造函数提供了数据类型转换的功能;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353687.shtml

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

相关文章

JavaFX实际应用程序:SkedPal

“真实世界的应用程序”系列中的一个新条目。 这次是SkedPal ,这是一个用于智能管理忙人生活的应用程序。 我一直在咨询SkedPal团队有关JavaFX的事宜,并且在他们决定开始使用我的CalendarFX框架来满足他们的日历要求时,我也在咨询他们。 在下…

url 特殊字符 传递参数解决方法

url 特殊字符 传递参数解决方法 有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。下表中列出了一些URL特殊符号及编码。十六进制值 1. URL 中号表示空格 %2B 2. 空格 URL中的空格可以用号或者编码 %20 3.…

chromium之histogram.h

histogram不知道是干啥的 // Histogram is an object that aggregates statistics, and can summarize them in // various forms, including ASCII graphical, HTML, and numerically (as a // vector of numbers corresponding to each of the aggregating buckets). google翻…

Java中的功能性FizzBu​​zz Kata

不久前,我使用Java 8流和lambda解决了FizzBu​​zz kata问题。 尽管最终结果是可行的,但中间步骤却没有。 我当然可以做得更好。 与往常一样,让我们​​从失败的测试开始: package remonsinnema.blog.fizzbuzz;import static or…

axis2 wsdl2java 使用方式

axis2 wsdl2java 使用方式(2011-04-15 22:41:43) 说明见:http://hi.baidu.com/aotori/blog/item/ee98efcdc6cc300301e92814.html 用wsdl2java简化客户端的编写 也许有很多读者会说“有没有搞错啊,只调用两个WebService方法用要写这么多代码,…

电脑播放视频的时候有杂音

一开始我还以为是视频本身自带的杂音,但是换了一个其它视频播放测试了一下,发现还是一样的结果。不甘心,又播放了一个音频,结果还是有杂音。 于是想是不是无意中把驱动卸载了,于是下载了驱动精灵补驱动。下载安装之后驱…

Axis2错误

Axis2错误 www.MyException.Cn 发布于:2012-09-18 16:21:42 浏览:70次 Axis2异常异常:java.lang.NoClassDefFoundError: org/apache/neethi/PolicyComponent 缺少:neethi-2.0.4.jar 异常:java.lang.ClassNotFound…

viewobject_只读ViewObject和声明性SQL模式

viewobject介绍 声明式SQL模式被认为是基于实体的视图对象的最有价值的优点之一。 在这种模式下,根据UI中显示的属性在运行时生成VOSQL。 例如,如果某个页面包含一个只有两列EmployeeId和FirstName的表,则查询将生成为“从Employees中选择Emp…

vue数组中对象属性变化页面不渲染问题

问题引入 Vue之所以能够监听Model状态的变化&#xff0c;是因为JavaScript语言本身提供了Proxy或者Object.observe()机制来监听对象状态的变化。但是&#xff0c;对于数组元素的赋值&#xff0c;却没有办法直接监听。 因此&#xff0c;如果我们直接对数组元素赋值 <ul>&l…

webservice生成客户端的方法

2011-11-09 20:33 webservice生成客户端的方法 目前为止webservice生成客户端方法比较多&#xff0c;我本身使用的主要有三种方式&#xff1a; &#xff08;1&#xff09;使用eclipse自带。 file->new->other->web services->web service client PS:这种方式生成的…

使用Hibernate(JPA)一键式删除

在旧版本的Hibernate中&#xff0c;我可以看到手册中指示的一键式删除 。 但是较新的版本不再包含此部分。 我不知道为什么。 因此&#xff0c;在这篇文章中&#xff0c;我来看看它是否仍然有效。 一键式删除部分显示&#xff1a; 有时一个接一个地删除收集元素可能效率极低。…

UDP和TCP

TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输&#xff0c;它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说&#xff0c;它…

MyEclipse6.0 安装axis2插件, 调用加密的SAP webservice

MyEclipse6.0 安装axis2插件, 调用加密的SAP webservice 6人收藏此文章, 我要收藏 发表于1个月前(2013-06-06 09:41) , 已有116次阅读 &#xff0c;共0个评论 首先鄙视一下自己&#xff0c;还在用myeclipse,竟然还是6.0版本&#xff0c;没办法&#xff0c;用习惯了&#xff0c…

Eclipse中要导出jar包中引用了第三方jar包怎么办

Eclipse中要导出jar包中引用了第三方jar包怎么办 (2009-07-20 15:28:44) 转载▼标签&#xff1a; it 分类&#xff1a; Eclipse 今天做个小的java程序&#xff0c;想要先将其导出成一个可执行的jar包&#xff01;向往常一样&#xff0c;单击菜单栏中的 File -> export,弹出…

枚举类型定义

enum orientation:byte { north 1, south 2, east 3, west4 } 注意&#xff1a;声明在代码的主体之外 转载于:https://www.cnblogs.com/judes/p/9042426.html

拖动滑块拼图背景图没显示_计划B? 那是计划N…没什么。 拼图于2015年问世

拖动滑块拼图背景图没显示真是一天 当典型的欧洲人逐渐破产时&#xff0c;美国的人们开始喝咖啡。 这就是为什么我在Mark Reinhold最近的新闻中睡个好觉的原因。 他在题为“ Project Jigsaw&#xff1a;火车晚点 ”的帖子中建议将Project Jigsaw推迟到下一个版本Java 9。 在最近…

vi 常用命令行

vi 常用命令行 vi 常用命令行 1.vi 模式   a) 一般模式&#xff1a; vi 处理文件时&#xff0c;一进入该文件&#xff0c;就是一般模式了.   b) 编辑模式&#xff1a;在一般模式下可以进行删除&#xff0c;复制&#xff0c;粘贴等操作&#xff0c;却无法进行编辑操作。等…

java keytool证书工具使用小结

Keytool 是一个Java数据证书的管理工具 ,Keytool将密钥&#xff08;key&#xff09;和证书&#xff08;certificates&#xff09;存在一个称为keystore的文件中在keystore里&#xff0c;包含两种数据:密钥实体&#xff08;Key entity&#xff09;-密钥&#xff08;secret key&a…

在Kafka中发布订阅模型

这是第四个柱中的一系列关于同步客户端集成与异步系统&#xff08; 1&#xff0c; 2&#xff0c; 3 &#xff09;。 在这里&#xff0c;我们将尝试了解Kafka的工作方式&#xff0c;以便正确利用其发布-订阅实现。 卡夫卡概念 根据官方文件 &#xff1a; Kafka是一种分布式的&…

深入理解C++中的mutable关键字

2006-12-16 05:00 来源&#xff1a;BLOG 作者&#xff1a;寒星轩 责任编辑&#xff1a;方舟yesky 评论(32)推荐&#xff1a;经典教程专区mutalbe的中文意思是“可变的&#xff0c;易变的”&#xff0c;跟constant&#xff08;既C中的const&#xff09;是反义词。在C中&…