`
jjklmm
  • 浏览: 57580 次
  • 性别: 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
分享到:
评论

相关推荐

    Objective-C数据类型和运算符

    ### Objective-C 数据类型和运算符 #### 一、Objective-C 数据类型概述 Objective-C 是一种通用、面向对象的编程语言,它在 C 语言的基础上增加了面向对象的能力。Objective-C 主要用于开发 macOS 和 iOS 应用程序...

    Programming With Objective-C

    在Objective-C中,类型转换需要特别注意,因为它是动态类型语言。类型转换在需要明确指明期望的对象类型时变得尤为重要。 13. 性能和效率 由于Objective-C是解释型语言,因此在某些情况下性能可能不如编译型语言。...

    Using-Swift-with-Cocoa-and-Objective-C(4.1)

    - **类型转换**:通过`as!`, `as?`和`as`关键字,Swift对象可以在适当的时候转换为Objective-C对象,反之亦然。 3. **混合编译**: - **模块(Module)**:Swift引入了模块的概念,可以更好地组织代码并允许跨文件...

    Objective-C语言核心语法

    这种设计提高了效率,允许不同数据类型的子类提供更高效的实现。isa-swizzling是实现这一特性的一种技术,它可以在运行时改变对象的类指针,从而改变对象的行为,但这必须谨慎操作,因为错误的类指针设置可能导致...

    Objective-C.2.0 程序设计

    Foundation框架是Objective-C编程的基础框架,提供了核心的数据类型和程序运行的基础支持。在本书中,读者可以了解到: 1. Foundation框架中的基本数据类型,如NSNumber、NSString、NSArray、NSDictionary等。 2. ...

    学习Objective-C--第一天.doc

    - 它是 C 语言的超集,意味着所有合法的 C 代码都是 Objective-C 的一部分,同时增加了面向对象编程的特性,如类别(categories)、协议(protocols)和动态类型等。 - Objective-C 的核心是消息传递机制,类似于 ...

    从 C++ 到 Objective-C 快速精通

    6. Foundation框架:Objective-C的基础库Foundation框架提供了许多核心的类和功能,如NSArray、NSDictionary等容器类,以及NSString、NSNumber等基础数据类型。C++程序员需要学习这些类的用法,以适应Objective-C的...

    Objective-C编程之道

    Foundation框架是Objective-C的基础,包含了许多常用的数据类型和实用工具类,如NSArray、NSDictionary、NSString等。Core Foundation是Foundation的底层C语言接口,两者可以相互转换,提供了更底层的控制。 在...

    swift-Objective-C下载动画

    在Swift-Objective-C项目中,开发者可能会利用Swift的简洁语法和强类型特性来创建核心功能,同时利用Objective-C的兼容性和丰富的Cocoa Touch框架来处理与系统更底层的交互。 "动画库"标签表明这个项目可能包含了...

    Using Swift with Cocoa and Objective-C中文

    Swift可以自动将`nil`转换为Swift的`Optional`类型,从而避免了在使用Objective-C API时出现的强制类型转换。 **扩展(Extensions)** Swift中的扩展可以为现有类型添加新的功能,如方法、属性等。这对于增强...

    Objective-C培训资料

    - Objective-C的基本数据类型和运算符 2. 第二章 - 类与对象 - 类的定义和对象的创建 - 属性(Properties)和实例变量 - 方法(Methods)的声明和调用 - 封装、继承和多态的概念与实现 3. 第三章 - 基本数据...

    Objective-c MD5 调试通过的!

    在Objective-C编程中,MD5被用来确保数据的完整性和一致性,尤其是在存储或者传输过程中。以下是对MD5在Objective-C中实现的详细解释。 首先,MD5算法产生一个128位(16字节)的摘要,通常以32位的16进制字符串形式...

    Objective-C 运行环境原理

    Objective-C 是一种面向对象的编程语言,它结合了C语言的基础语法与Smalltalk的面向对象能力。Objective-C 的一大特色是其强大的运行时特性,这些特性使得它能够在程序执行期间动态地处理很多任务,比如消息传递、...

    objective-c编程入门学习笔记

    Objective-C支持多种数据类型,并且提供了丰富的运算符。例如,可以进行简单的算术运算: ```objective-c int sum = 20 + 25; NSLog(@"The sum is %i", sum); ``` ##### 3. 键盘输入 Objective-C中的键盘输入可以...

    Objective-C基础教程

    Objective-C的类型信息是在运行时确定的,允许动态类型转换和动态加载类。Foundation框架中的`NSClassFromString`函数可以依据字符串创建对象。 5. **协议(Protocol)** 协议定义了一组方法,对象可以选择遵守...

    Objective-C-2.0程序设计-基本的C语言特性.ppt

    预处理器宏如`#define`用于文本替换,枚举用于定义一组关联的常量,类型转换允许不同数据类型之间的转换。 13.8 工作原理 了解这些基本的C语言特性有助于理解Objective-C如何在内存中管理和操作数据,以及函数调用...

    Objective-C HelloWorld! 程序案例

    `Foundation` 是Objective-C中一个重要的框架,它包含了处理字符串、数组、集合等基础数据类型和其他常用功能的类。通过导入`Foundation`框架,我们可以使用其中提供的类和函数,例如`NSLog`函数。 ##### 2. `main`...

Global site tag (gtag.js) - Google Analytics