类型转换

C++强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast

偶尔善良 提交于 2019-11-29 13:46:31
C++强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast 1. c强制转换与c++强制转换 c语言强制类型转换主要用于基础的数据类型间的转换,语法为: (type-id)expression//转换格式1 type-id(expression)//转换格式2 c++除了能使用c语言的强制类型转换外,还新增了四种强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast,主要运用于继承关系类间的强制转化,语法为: static_cast<new_type> (expression) dynamic_cast<new_type> (expression) const_cast<new_type> (expression) reinterpret_cast<new_type> (expression) 备注:new_type为目标数据类型,expression为原始数据类型变量或者表达式。 《Effective C++》中将c语言强制类型转换称为 旧式转型 ,c++强制类型转换称为 新式转型 。 2. static_cast、dynamic_cast、const_cast、reinterpret_cast static_cast static

Java中各种类型转换

血红的双手。 提交于 2019-11-29 12:21:10
写Android数据处理代码的时候,往往要用到各种类型转换,但是往往自己又记不住,好了,现在决定整理一下写在博客里。以后好查,也给大家一个方便。下面会有一段段的实例代码。 String-->short String src = "2222"; short dest = Short.parseShort(src); String-->int String src = "2222"; int dest = Integer.parseInt(src); String-->Long String src = "2222"; Long dest1 = Long.parseLong(src); 而反过来的话,则容易。用toString()即可。 没完待续。。。 转载于:https://my.oschina.net/u/860952/blog/549220 来源: https://blog.csdn.net/chouchou8654/article/details/100807744

基本数据类型和类型转换

白昼怎懂夜的黑 提交于 2019-11-29 12:18:52
本人博客园链接 https://www.cnblogs.com/zongmin/ 基本数据类型介绍 Java 的基本数据类型共有 8 种,分为两类:boolean 类型和数值类型,数值类型又可以分为整数类型、字符类型、浮点类型。 整数类型 byte:1个字节,范围:(-2^7) ~ (2^7-1) short:2个字节,范围:(-2^15) ~ (2^15-1) int:4个字节,范围:(-2^31) ~ (2^31-1) long:8个字节,范围:(-2^63) ~ (2^63-1) int 是最常用类型,通常情况下,直接给出一个整数值默认就是 int 类型,例如: //128会被系统默认当成int类型,然后赋值给变量a int a = 128 ; 有两种特殊情况必须指出: 将一个较小的整数值(在 byte 或 short 类型范围内)赋给一个 byte 或 short 变量,系统会自动把将 int 类型转换为 byte 或者 short 类型来处理。 将一个巨大的整数值(超出了 int 类型范围)赋予 long 类型,系统不会自动将它转换为 long 类型来处理,必须在整数值后加 l 或者 L 作为后缀。 //代码正确,系统自动把56转换byte类型 byte a = 56 ; //代码错误,整数值超过int类型范围 long bigValue1 =

c++ 之 类型转换

纵然是瞬间 提交于 2019-11-29 12:16:59
一、隐式类型转换 int m = 3 + 45.6; //48.6000000000 截断为48,将小数部分进行截断 二、C风格 显式类型转换(强制类型转换) //int k = 5 % 3.2; 编译器报错int k = 5 %(int)3.2; //C语言风格的强制类型转换,但需要程序员来保证数据正确可转 int k = 5 % int(3.2); //函数风格的强制类型转换(C语言风格的强制类型转换中的一种) int k = 5 %(int)"dddd"; //C语言风格的强制类型转换,但结果肯定错误 //所以C语言风格的强制类型转换是一种不安全的类型强制转换 三、C++类型转换 //C++出来支持C风格的类型转换,但提供4中C++的强制类型转换,分别用于不同的目的//目的是为了提供丰富的含义和功能,更好的类型检查机制,方便代码的书写与维护 1.static_cast2.dynamic_cast3.const_cast4.reinterpret_cast这四种强制类型转换被称为 "命名的强制类型转换" 1.static_cast:静态转换(可以理解为C风格的强制类型转换,但编译器会检查其合法性) //通用形式//强制类型转换名<type>(express);1.static_cast:静态转换(可以理解为C风格的强制类型转 换,但编译器会检查其合法性) 可用于 a

数据类型的隐性转型和显性转型

泄露秘密 提交于 2019-11-29 11:43:41
自动类型转换,也称隐式类型转换,是指不需要书写代码,由系统自动完成的类型转换。由于实际开发中这样的类型转换很多,所以Java语言在设计时,没有为该操作设计语法,而是由JVM自动完成。 转换规则 从存储范围小的类型到存储范围大的类型。 具体规则为: byte→short(char)→int→long→float→double 也就是说byte类型的变量可以自动转换为short类型,示例代码: byte b = 10; short sh = b; 这里在赋值时,JVM首先将b的值转换为short类型,然后再赋值给sh。 在类型转换时可以跳跃。示例代码: byte b1 = 100; int n = b1; l 注意问题 在整数之间进行类型转换时,数值不发生改变,而将整数类型,特别是比较大的整数类型转换成小数类型时,由于存储方式不同,有可能存在数据精度的损失。 强制类型转换,也称显式类型转换,是指必须书写代码才能完成的类型转换。该类类型转换很可能存在精度的损失,所以必须书写相应的代码,并且能够忍受该种损失时才进行该类型的转换。 转换规则 从存储范围大的类型到存储范围小的类型。 具体规则为: double→float→long→int→short(char)→byte 语法格式为: (转换到的类型)需要转换的值 示例代码: double d = 3.10; int n = (int)d;

运算优先级及类型转换

有些话、适合烂在心里 提交于 2019-11-29 11:34:13
运算优先级及类型转换 1. 在一个表达式中可能包含多个有不同运算符连接起来的、具有不同数据类型的数据对象;由于表达式有多种运算,不同的结合顺序可能得出不同结果甚至出现错误运算错误,因为当表达式中含多种运算时,必须按一定顺序进行结合,才能保证运算的合理性和结果的正确性、唯一性。 优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同 。 2. 优先级与求值顺序无关。如 a+b && b*c,虽然*优先级最高,但这个表达式求值顺序是从左到右。 优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。 相同优先级中,按结合性进行结合。大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是 单目运算符、 条件运算符 、 赋值运算符 。 基本的优先级需要记住: 指针最优,单目运算优于双目运算。如正负号。 先算术运算,后移位运算,最后位运算。请特别注意: 1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7. 逻辑运算最后结合。 来源: https://www.cnblogs.com/yhakaki/p/11516648.html

C++ 类型转换

余生颓废 提交于 2019-11-29 11:33:13
const_cast 去除const属性限制 dynamic_cast 常用于父类子类指针、引用、void*指针转换 static_cast 静态编译期,明确可知的转换 reinterpret_cast 强转,可用于指针转整数,整数转指针 来源: https://my.oschina.net/yeahlife/blog/3105741

Struts2处理类型转换错误上

谁说我不能喝 提交于 2019-11-29 11:09:59
一 视图 1 input.jsp <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>类型转换的错误处理</title> </head> <body> <s:fielderror/> <h3>类型转换的错误处理</h3> <p><b>输入的用户名、密码以逗号(,)隔开</b></p> <s:form action="login"> <s:textfield name="user" label="用户"/> <tr> <td colspan="2"><s:submit value="转换" theme="simple"/> <s:reset value="重填" theme="simple"/></td> </tr> </s:form> <

Struts2处理类型转换错误下

半城伤御伤魂 提交于 2019-11-29 11:09:58
一 视图 1 input.jsp <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>类型转换的错误处理</title> <s:head/> </head> <body> <s:fielderror /> <h2>类型转换的错误处理</h2> <p><b>请输入用户信息</b></p> <s:form action="login"> <s:textfield name="user.name" label="用户名"/> <s:textfield name="user.age" label="年龄"/> <s:textfield name="user.birth" label="生日"/> <tr> <td colspan="2"><s

Struts基于List的类型转换

陌路散爱 提交于 2019-11-29 10:18:55
一 视图 1 input.jsp <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>直接封装成List</title> </head> <body> <h3>直接封装成List</h3> <s:form action="login"> <s:textfield name="users[0].name" label="第一个用户名"/> <s:textfield name="users[0].pass" label="第一个密码"/> <s:textfield name="users[1].name" label="第二个用户名"/> <s:textfield name="users[1].pass" label="第二个密码"/> <tr>