C的强制转换和C++的强制转换(转)

C的强制转换:

(type)<expression>   其中,type为类型描述符,如int,float等。<expression>为表达式。经强制类型转换运算符运算后,返回一个具有type类型的数值,这种强制类型转换操作并不改变操作数本身,运算后操作数本身未改变,例如:   int nVar=0xab65;   char cChar=char (nVar);   上述强制类型转换的结果是将整型值0xab65的高端两个字节删掉,将低端两个字节的内容作为char型数值赋值给变量cChar,而经过类型转换后nVar的值并未改变。

C++的强制转换:

static_cast < type-id > ( expression )   该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:   

①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。   进行上行转换(把派生类的指针或引用转换成基类表示)是安全的;   进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态类型检查,所以是不安全的。   

②用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。   

③把空指针转换成目标类型的空指针。   

④把任何类型的表达式转换成void类型。   注意:static_cast不能转换掉expression的const、volitale、或者__unaligned属性。

dynamic_cast< type-id > ( expression ) 主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换。   

1.在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的;   

2.在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全。

const_cast<T*>(a)

去掉类型中的常量,除了const或不稳定的变址数,T和a必须是相同的类型。

reinterpret_cast<T*>(a)

任何指针都可以转换成其它类型的指针,T必须是一个指针、引用、算术类型、指向函数的指针或指向一个类成员的指针。

时间: 2024-10-17 23:09:17

C的强制转换和C++的强制转换(转)的相关文章

隐式转换和显式转换及强制转换的区别【转】

隐式转换和显式转换及强制转换的区别 string strType = "123"; object objType= (object)strType;//可以不要,隐式转换, 要的为显式转换 string strType2 = (string)objType; //必须要,显式转换 int intType = (int)strType; //错误,不能通过编译 int intType = (int)objType; //错误,能通过编译 int intType = Convert.ToI

C#字母转换成数字/数字转换成字母 - ASCII码转换

字母转换成数字 byte[] array = new byte[1];   //定义一组数组arrayarray = System.Text.Encoding.ASCII.GetBytes(string); //string转换的字母int asciicode = (short)(array[0]); ASCII码 = Convert.ToString(asciicode); //将转换一的ASCII码转换成string型 数字转换成字母byte[] array = new byte[1];ar

json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值

主要内容: 一.json相关概念 二.json字符串转换成json对象 (字符串-->JSON对象) 三.json对象转换成字符串(json对象-->字符串) 四.将值转换成字符串(值-->字符串) 五.字符串转成值(字符串-->值) 同步的交流学习社区:http://www.mwcxs.top/page/425.html 一.json相关概念 json,全称为javascript object notation,是一种轻量级的数据交互格式.采用完全独立于语言的文本格式,是一种理想

金额转换,阿拉伯数字的金额转换成中国传统输出。

1 package sfbc; 2 3 import java.text.DecimalFormat; 4 import java.util.HashMap; 5 import java.util.Map; 6 /** 7 * 金额转换,阿拉伯数字的金额转换成中国传统输出. 8 * @author trfizeng 9 * 10 */ 11 public class FormateMoneyCN { 12 // 阿拉伯数字对应的大写汉字 13 public static final Map<St

数据格式转换(一)PDF转换技术

PDF(Portable Document Format)文件格式是Adobe公司开发的电子文件格式.这种文件格式与操作系统平台无关,这一特点使它成为在Internet上进行电子文档发行和数字化信息传播的理想文档格式.越来越多的电子图书.产品说明.公司文告.网络资料.电子邮件开始使用PDF格式文件.PDF格式文件目前已成为数字化信息事实上的一个工业标准. PDF具有许多其他电子文档格式无法相比的优点.PDF文件格式可以将文字.字型.格式.颜色及独立于设备和分辨率的图形图像等封装在一个文件中.该格

PHP编码转换减号(连接符)无法转换问题

PHP编码转换减号(连接符)无法转换问题技术 maybe yes 发表于2015-01-23 16:03 原文链接 : http://blog.lmlphp.com/archives/67  来自 : LMLPHP后院 使 用 PHP 的 iconv 或 mb_convert_encoding 函数进行编码转换,比如将 gb2312 转换为 utf-8 编码,在出现某些特殊字符(减号,连接符)时,不能正常工作,可能会变成问号"?"或者"C".尝试了多种方法,依然不能

将list&lt;对象&gt;转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据

领导让在存储过程中批量添加数据,找出效率最高的,我看到后台代码后,发现可以将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据,知道还有其他的方法,不过这个方法已经实现,就写一下了: 1.创建表. CREATE TABLE [dbo].[person]( [ID] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](50) NULL, [Pwd] [nvarchar](50) NULL, [Age]

List转DataTable(反射) ; 将泛型集合类转换成DataTable ; 将集合类转换成DataTable

#region 将集合类转换成DataTable /// <summary> /// 将集合类转换成DataTable /// </summary> /// <param name="list">集合</param> /// <returns></returns> public static DataTable ToDataTable(IList list) { DataTable result = new Dat

黑马程序员_JavaScript变量转换和Jquery对象的转换

在实际编程过程中,有很多对字符串进行判断.拆分.比较.转换类型.校验等操作,下面我会总结下JavaScript变量转换和Jquery对象的转换. 1.JavaScript 变量转换及字符串操作 1.字符串变成int类型 使用函数:parseInt(); 使用此函数,可将string类型变量转换为int类型.而且只能够对string类型变量使用.如果待转换string类型变量无发转换为int类型时,函数会返回NaN. 实例如下: var v_Num = parseInt('256ok'); //