`
jjklmm
  • 浏览: 55179 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

objective-C 数据类型转换

阅读更多

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

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

_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 变量。

 

致力于做中国最棒的移动应用培训机构 http://www.miiceic.org.cn/ios/

0
0
分享到:
评论

相关推荐

    iOS应用开发之objective-C视频讲解(全套)

    【】2.ios预科班_oc_数据类型转换以及类方法变量属性 【】3.ios预科班_oc_内存管理_对象的初始化 【】4ios预科班_oc_存取器_继承_动态绑定和i 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    Objective-C2.0程序设计

    10.6 数据类型转换 10.6.1 转换规则 10.6.2 符号扩展 10.7 练习 第11章 分类和协议 11.1 分类 11.2 协议 11.3 合成对象 11.4 练习 第12章 预处理程序 12.1 #define语句 12.1.1 更高级的定义类型 12.1.2 #运算符 ...

    PropertyMapper:Objective-C iOS应用程序的属性映射

    进行类型转换 数据格式验证 为什么选择属性映射器? 有一些诸如Mantle,RESTKit之类的库可以帮助您解决这些问题,但是我想要的是自包含的,易于更改/删除且需要最少代码量的东西。 我在创建创建了Property Mapper ...

    Swift使用Cocoa中的数据类型教程

    主要介绍了Swift使用Cocoa中的数据类型教程,Swift 会自动将一些 Objective-C 类型转换为 Swift 类型,以及将 Swift 类型转换为 Objective-C 类型,需要的朋友可以参考下

    CrystDB:CrystDB是基于SQLite的线程安全且方便的对象关系映射数据库

    水晶数据库 ...安全映射:检查每种对象类型,并且可以安全地在SQLite和Objective-C之间进行转换 高性能:存储速度快,简单对象的存储速度比Realm快2-4倍,查询速度也比Realm快 性能 部署2000次GithubU

    kvc:KVC-Erlang数据结构的键值编码

    list() dict() gb_trees() proplist() {struct, proplist()} (通常在mochijson2中使用) {proplist()} ( ) map() Erlang 17+ 密钥仅允许使用以下数据类型,并且如果发生任何类型的强制转换,则它们必须为UTF-8:...

    Cocos2d-x与Android交互(c++与java互调),与IOS交互(c++与objective c混编)

    Cocos2d-x与Android交互(c++与java互调),与IOS交互(c++与objective c混编) 具体的代码请下载这个文件,里面有更详细的jni使用方法,包括传递基本数据类型,返回基本数据类型的值,及类型的转换。

    NSArray_NSMutableArray

    Objective-C的数组比C++,Java的数组强大在于,NSArray保存的对象可以是不同的对象。但只能保存对象,int ,char,double等基本数据类型不能直接保存,需要通过转换成对象才能加入数组。

    quicktype-vscode:VS Code扩展,可将JSON转换为TypeScript,C#,Go等

    支持TypeScript , Python , Go , Ruby , C# , Java , Swift , Rust , Kotlin , C++ , Flow , Objective-C , JavaScript , Elm和JSON Schema 。 从JSON,JSON Schema和TypeScript交互式生成类型和(反...

    WKT 格式转换 WKT Parser.zip

    WKT 格式转换 WKT Parser ,WKTParser 库带有任何的转换,解析器和格式,允许你解析三个主要的 WKT 数据类型:点线面(...

    读《ThreadingProgrammingGuide》笔记2:线程配置与RunLoop

    文章中有对官方文档的翻译,也有自己的理解,官方文档中代码片段的示例在这篇文章中都进行了完整的重写,还有一些文档中没有的代码示例,并且都使用Swift完成,给大家一些Objective-C与Swift转换的参考。线程也是...

    iOS开发使用JSON解析网络数据

    JSON是一种轻量级的数据格式,一般用于数据交互JSON的格式很像Objective-C中的字典和数组:{“name”:”jack”,”age”:10} 补充:  标准的JSON格式的注意点:key必须用双引号。(但是在Java中是单引号)  JSON-OC的...

    构建iPhone应用界面数据输入表单框架

    IBAForms是一个Objective-C类库,提供基于UITableView和UITableViewCell等常见UIKit类的抽象层。 主要特性: 1、提供一套常见的表单字段类型((text, password, boolean, date, pick list); 2、管理表单字段...

    NSDictionary-Model-Interconversion:字典(NSDictonary数组)和模型(Model数组)的相互转换,将模型数组转换成字典数组,字典数组转换成模型数组,拓展功能添加了token支持

    网络解析json数据都是以字典的形式,我们有时候需要将json数据转换成model,显的特别麻烦,尤其是字典数组,或者字典中还有嵌套字典。 后者对象中包含对象想转换成NSDictionary字典时,也是特别麻烦。 为了解决这类...

    YYModel:适用于iOSOSX的高性能模型框架

    自动类型转换:可以自动转换对象类型。 类型安全:将验证所有数据类型,以确保在转换过程中类型安全。 非介入式:无需使模型类继承自其他基类。 轻量级:此库仅包含5个文件。 文档和单元测试:100%的文档覆盖率,...

    跨平台移动端开发NativeScript.zip

    类型转换模块将JavaScript的String类型转换为一个java.lang.String对象 运行时环境为java.io.File创建一个代理对象 通过该代理将对原有JS File对象的调用委托给相应的Java实例 据Telerik介绍,与...

    quicktype:从JSON,Schema和GraphQL生成类型和转换器

    quicktype通过JSON,JSON Schema,TypeScript和生成强类型化的模型和序列化,从而使在许多编程语言中安全地使用JSON类型变得轻而易举。 。 阅读以获取更多介绍。 如有任何疑问,请先查看 。 支持的输入 JSON格式 ...

    《iPhone开发实战》.(Christopher Allen).pdf

    第10章 objective-c和iphone os128 10.1 下载sdk128 10.1.1 安装sdk128 10.1.2 sdk剖析130 10.2 objective-c介绍131 10.2.1 概述131 10.2.2 消息132 10.2.3 类定义133 10.2.4 属性135 10.2.5 ...

Global site tag (gtag.js) - Google Analytics