C++将使用类型转换
来源:互联网 发布:php 压缩图片 编辑:程序博客网 时间:2024/06/06 18:46
在此之前,您了解到一个变量的值被存储为一个位的序列,而变量的数据类型告诉编译器如何将这些比特转换成有意义的值。不同的数据类型可以不同地表示“相同的”号,例如,整数值3和浮点数3被存储为完全不同的二进制模式。
在所有这些情况下(不少人),C++将使用类型转换将数据转换为另一种类型。
类型转换有两种基本类型:隐式类型转换,编译器自动将一个基本数据类型转换成另一个基本数据类型,而显式类型转换,其中,开发人员使用一个铸造操作符来直接转换。
我们将在这个教训中覆盖隐式类型转换,然后在下一个。
隐式类型转换
隐式类型转换(也被称为自动类型转换或强制)是每当一个基本的数据类型,但提供一个不同的基本数据类型,用户并没有明确告诉编译器如何执行这种转换(通过演员)。
以上所有的例子都是隐式类型转换的情况下使用的。
有两种基本类型的隐式类型转换:促销和转换。
数字提升
当一个值从一个类型转换成一个更大的类似数据类型的值,这被称为一个数字提升(或扩大,虽然这个术语通常是保留整数)。例如,int可以发展成长,或浮升到一个双:
算术表达式求值
当评估表达式,编译器将每个表达为单独的子表达式。算术运算符要求它们的操作数为同一类型。如果使用混合类型的操作数,编译器将隐式地转换一个操作数,使用一个称为通常的算术转换的过程来同意另一个操作数。要做到这一点,它使用以下规则:
如果操作数是一个整数,它经历了整数提升(如上所述)。
如果操作数仍然不匹配,则编译器会查找最高优先级的操作数,并将其他操作数转换为匹配的操作数。
那么,当我们做这样的事情时会发生什么呢?
void doSomething(long l){} doSomething(3); // pass integer value 3 to a function expecting a long parameter
在所有这些情况下(不少人),C++将使用类型转换将数据转换为另一种类型。
类型转换有两种基本类型:隐式类型转换,编译器自动将一个基本数据类型转换成另一个基本数据类型,而显式类型转换,其中,开发人员使用一个铸造操作符来直接转换。
我们将在这个教训中覆盖隐式类型转换,然后在下一个。
隐式类型转换
隐式类型转换(也被称为自动类型转换或强制)是每当一个基本的数据类型,但提供一个不同的基本数据类型,用户并没有明确告诉编译器如何执行这种转换(通过演员)。
以上所有的例子都是隐式类型转换的情况下使用的。
有两种基本类型的隐式类型转换:促销和转换。
数字提升
当一个值从一个类型转换成一个更大的类似数据类型的值,这被称为一个数字提升(或扩大,虽然这个术语通常是保留整数)。例如,int可以发展成长,或浮升到一个双:
23456789int main(){ int i = 30000; char c = i; std::cout << static_cast<int>(c); return 0;}
算术表达式求值
当评估表达式,编译器将每个表达为单独的子表达式。算术运算符要求它们的操作数为同一类型。如果使用混合类型的操作数,编译器将隐式地转换一个操作数,使用一个称为通常的算术转换的过程来同意另一个操作数。要做到这一点,它使用以下规则:
如果操作数是一个整数,它经历了整数提升(如上所述)。
如果操作数仍然不匹配,则编译器会查找最高优先级的操作数,并将其他操作数转换为匹配的操作数。
0 0
- C++将使用类型转换
- 用C语言实现将int类型转化为字符串,不使用已有的转换函数
- [C#] 如何将String类型转换成任意基本类型
- [C#] 如何将String类型转换成任意基本类型
- 使用SimpleDateFormate将date类型与String类型相互转换
- 【C++】使用stringstream对象简化类型转换
- 将证书转换类型
- 比如将一个变量转换到INT类型 C#.NET中如何进行强制类型转换
- C#.NET开发Winform使用MySQL数据库 无法将“System.Byte[]”的对象强制转换为类型“System.IConvertible”
- <C/C++> 类型转换
- C/C++:类型转换
- ostringstream istringstream 使用实例——将任意类型转换为字符串,将字符串转换为任意类型
- 将java.util.Date类型转换成json时,使用JsonValueProcessor将date转换成希望的类型
- C类型转换:error C2664:不能将参数 从“int”转换为“const char *”
- C类型转换
- C#.NET 类型转换
- 类型转换(C#)
- C指针类型转换
- 如何分析tombstone文件
- 简单理解了下java中的垃圾回收机制
- Android调用摄像头后系统回收activity造成数据丢失
- 实现红黑树
- Java并发编程:线程池的使用
- C++将使用类型转换
- 薄荷Toolbar(ActionBar)的适配方案
- 根据UIview 实现画虚线
- git将当前分支上修改的东西转移到新建分支
- [Leetcode]257. Binary Tree Paths
- 二叉树的java实现
- 计算机信息——注意
- 成为一名更好的程序员:如何阅读源代码
- 转学习笔记:Caffe上配置和运行MNIST