object-C中的数据类型转换

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

如果这些数据类型进行混合运算,运算中不同类型的数据先转化为同一类型,然后进行运算,转换从左到右自动转换,如表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

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

long int l = 6666666666;

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

int i = (int)l;

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

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

int total = 3446;

int n = 6;

float average = total / n;

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

本文出自 “关东升” 博客,请务必保留此出处http://2009315319.blog.51cto.com/701759/716454

时间: 2024-11-02 19:56:34

object-C中的数据类型转换的相关文章

VC中的数据类型转换BSTR、char*和CString

简介 摘要:关于VC中的数据类型转换BSTR.char*和CString的深入研究. 步骤/方法 char*转换成CString 若将char*转换成CString,除了直接赋值外,还可使用CString::Format进行.例如: char chArray[] = "This is a test"; char * p = "This is a test"; 或 LPSTR p = "This is a test"; 或在已定义Unicode应的

c++ 数据类型与原始数据之间的转换 C++中各种数据类型转换

glm 中 数据类型 与 原始数据(c++ 数组)之间的转换 float* -> glm::vec3 float g_AxisDirection[] = {0.0f, 1.0f, 0.0f}; glm::make_vec3(g_AxisDirection) glm::mat4->float* glm::mat4 Rx = glm::mat4(1); (float*)glm::value_ptr(Rx) C++中各种数据类型的转换 %f常用数据类型使用转换详解   leo: 要在Unicode字

objective-C中的数据类型转换

按照数据类型占用存储不同可以自动类型转换或强制类型转换,总的原则是小存储容量数据类型可以自动转换成为大存储容量数据类型. 不同类型数据间按照下面关系的从左到右(从低到高)自动转换, _Bool . char . short int .枚举类型 -> int ->long int->long long-> float -> double -> long double . 如果这些数据类型进行混合运算,运算中不同类型的数据先转化为同一类型,然后进行运算,转换从左到右自动转换

javascript中数据类型转换详解

在js中,数据类型转换分为显式数据类型转换和隐式数据类型转换. 1, 显式数据类型转换 a:转数字: 1)Number转换: 代码: vara = "123";   a = Number(a); 注意: a) 如果转换的内容本身就是一个数值类型的字符串,那么将来在转换的时候会返回自己. b) 如果转换的内容本身不是一个数值类型的字符串,那么在转换的时候结果是NaN. c) 如果要转换的内容是空的字符串,那以转换的结果是0. d) 如果是其它的字符,那么将来在转换的时候结果是NaN. 2

简要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. 有叁种

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

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

c语言-数据类型转换是怎样截取的

问题描述 数据类型转换是怎样截取的 C语言中 main() { float k=2.1,x=2.9; printf("%d %d ",(int)(2.1+x),(int)(k+2.9)); } 输出是5,4???求解 解决方案 楼主觉得两者应该相加都等于5,所以应该打印出5是吧 首先,float作为浮点数,是没法精确比较的,我们在做比较的时候一般都会设置一个误差,只要两者相减的绝对值小于误差我们就认为他们相等 浮点数在内存中是 SEEE EEEE EMMM MMMM MMMM MMMM

浅析Java中对象的创建与对象的数据类型转换_java

Java:对象创建和初始化过程 1.Java中的数据类型    Java中有3个数据类型:基本数据类型(在Java中,boolean.byte.short.int.long.char.float.double这八种是基本数据类型).引用类型和null类型.其中,引用类型包括类类型(含数组).接口类型.     下列语句声明了一些变量: int k ; A a; //a是A数据类型的对象变量名. B b1,b2,-,b10000;// 假定B是抽象类或接口. String s;      注意:从

SQL Server 2008处理隐式数据类型转换在执行计划中的增强

什么是隐式http://www.aliyun.com/zixun/aggregation/18278.html">数据类型转换: 当我们在语句的where 条件等式的左右提供了不同数据类型的列或者变量,SQL Server在处理等式之前,将其中一端的数据转换成跟另一端数值的数据类型一致,这个过程叫做隐式数据类型转换. 比如 char(50)=varchar(50), char(50)=nchar(50), int=float, int=char(20) 这些where 条件的等式都会触发隐