objectC 数据类型转换

按照数据类型占用存储不同可以自动类型转换或强制类型转换,总的原则是小存储容量数据类型可以自动转换成为大存储容量数据类型。

不同类型数据间按照下面关系的从左到右(从低到高)自动转换,

_Bool、char、short int、枚举类型 -> int ->long int->long long-> float -> double -> long double。

如果这些数据类型进行混合运算,运算中不同类型的数据先转化为同一类型,然后进行运算,转换从左到右自动转换,如表2-3所示。

表2-3 类型转换先后顺序表


操作数1类型


操作数2类型


转换后的类型


_Bool、char、short int、枚举类型


int


int


_Bool、char、short int、枚举类型、int


long int


long int


_Bool、char、short int、枚举类型、int、long int


long long


long long


_Bool、char、short int、枚举类型、int、long int、long long


float


float


_Bool、char、short int、枚举类型、int、long int、long long、float


double


double


_Bool、char、short int、枚举类型、int、long int、long long、float、double


long double


long double

 

如果有下面的表示式,其中,f是float类型,i为int类型,l为long int 类型,s为short int类型,结果是什么类型?

f * i + l /s

运行结果为float类型,这是因为f是float其它的操作数与float运算其结果就是float类型。

如果遵守类型转换是右到左情况,就需要强制类型转换了,强制类型转换语法形式上很简单,就是在数据前面加上(目标类型),但是这种转换是存在风险的,有可能造成数据的丢失,需要谨慎进行。例如:

         long int l = 6666666666;

         NSLog(@"l = %li",l);

         int i = (int)l;

         NSLog(@"i = %i",i);  

运行的结果是,其中6666666666数值已经超出了int类型的容量,因此出现了数据的丢失。

    l = 6666666666

    i = -1923267926

强制转换有的时候嵌入在其它的表达式里面,它会与运行的优先级交织在一起,情况就会变的更加复杂,假设有下面的几条语句:

int total = 3446;  

int n = 6;

float average = total / n;

运行完成float的变量average结果是574,小数点内容被截取掉了,如果我们采用下面的语句实现:

int total = 3446;  

int n = 6;

float average = (float)total / n;

运行完成float的变量average结果是574.333,这个数据要比上面计算的精确,这是因为(float)total先把int类型的total变量转换成为float类型的total变量。

时间: 2024-09-17 03:12:27

objectC 数据类型转换的相关文章

Swift数据类型及数据类型转换

整型      Swift 提供 8.16.32.64 位形式的有符号及无符号整数.这些整数类型遵循 C 语言的命名规 约,如 8 位无符号整数的类型为 UInt8,32 位 有符号整数的类型为 Int32.与 Swift 中的所有 类型一样,这些整数类型的名称以大写字母开 头.   Swift 还提供了一个整数类型Int:      在 32 位平台,Int 与 Int32 宽度一致.      在 64 位平台,Int 与 Int64 宽度一致.              Swif

emit-dapper.net IDataReader数据类型转换报错:操作可能会破坏运行时稳定性

问题描述 dapper.net IDataReader数据类型转换报错:操作可能会破坏运行时稳定性 object item3 = ((IDataRecord)this)[num8]; if (item3 is DBNull) { } else { string str1 = item3 as string; str = str1; if (str1 == null) { pluginType = (PluginType)Convert.ToByte(item3); } else { plugin

php 数据类型转换

本篇文章主要分享一下PHP数据类型转换的知识. PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有: (int).(integer):转换成整形 (float).(double).(real):转换成浮点型 (string):转换成字符串 (bool).(boolean):转换成布尔类型 (array):转换成数组 (object):转换成对象 PHP数据类型有三种转换方式: (1)在要转换的变量之前加上用括号括起来的目标类型,例如: (int)  (bool)  (float)  (

PHP数据类型转换

PHP数据类型转换   PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有:   •(int).(integer):转换成整形  •(float).(double).(real):转换成浮点型  •(string):转换成字符串  •(bool).(boolean):转换成布尔类型  •(array):转换成数组  •(object):转换成对象  PHP数据类型有三种转换方式:   •在要转换的变量之前加上用括号括起来的目标类型  •使用3个具体类型的转换函数,intval().fl

简要JAVA数据类型转换

数据|数据类型|转换 1如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([String],[int radix]); 2). int i = Integer.valueOf(my_str).intValue(); 注: 字串转成 Double, Float, Long 的方法大同小异. 2 如何将整数 int 转换成字串 String ? A. 有叁种

C++:小端模式与强制数据类型转换

1.先从一个问题说开去 C++数据类型转换的问题 #include <iostream.h> void main() { int i=0xb62; char c; c=i; cout<<c<<endl; } 这里为什么输出的是b? 2.先检测一下我们所使用的电脑的CPU的字节序 版本一(有问题,结果无论如何都是34,不能说明34是高地址的还是低地址的) 版本二(根据 shineyan1991的留言修改后得到的,在此谢谢 shineyan1991的建议) 从上图可知,CP

Silverlight3系列(七)数据绑定 Data Binding 3 数据类型转换 Data Converte

Silverlight3系列(七)数据绑定 Data Binding 3 数据类型转换 Data Converter 7 数据转换 在普通的情况下,数据从后台到前台显示,没有任何变化.看起来是符合逻辑的,但是有可能不是你想要的效果,数据源的数据可能是的低级别的(这里的低级别是说数据比较原始,或者说是数据库可以理解的,不是最终用户可以理解的形式),你不想让他直接显示在界面上.例如:你可能会将数字变成用户可以看懂的形式.或者是想让日期显示成长格式的字符串.如果是这样的话,你需要将数据转换成正确的显示

Java编程那些事儿19—数据类型转换

3.7 数据类型转换 Java语言是一种强类型的语言.强类型的语言有以下几个要求: l变量或常量必须有类型 要求声明变量或常量时必须声明类型,而且只能在声明以后才能使用. l赋值时类型必须一致 值的类型必须和变量或常量的类型完全一致. l运算时类型必须一致 参与运算的数据类型必须一致才能运算. 但是在实际的使用中,经常需要在不同类型的值之间进行操作,这就需要一种新的语法来适应这种需要,这个语法就是数据类型转换. 在数值处理这部分,计算机和现实的逻辑不太一样,对于现实来说,1和1.0没有什么区别,

C#数据类型转换的几种形式

本篇文章是对C#中数据类型转换的几种形式进行了详细的分析介绍,需要的朋友参考下   1.Convert.ToInt32(); //转换成32位的整数. 2.变量.ToString();/最常见的转换成 字符串. 3."订单"+2514 //后面的数字会转换为字符串. 4.((类名A)对象名X) //强行将 对象X 转换成 A类 的对象. 5.int.Parse(string);把字符串型转换成其他类型. 6.还有,如果要转换成的类型为引用类型,还可以用 as teacher tea =