`

【IOS 开发】Object - C 语法 之 类型转换

 
阅读更多

作者 : 万境绝尘 (octopus_truth@163.com)

转载请注明出处 :http://blog.csdn.net/shulianghan/article/details/39135079



1. 自动类型转换


自动类型转换 : 将一个基本类型变量 赋值给另外一个基本类型变量就会出现基本类型转换;

-- 整型 -> 浮点型 : 除了类型转换为浮点型之外, 不会有太大变化;

-- 浮点型 -> 整型 : 类型转为整型, 小数部分被舍弃;

-- 长整形 -> 整型 : 取值范围变小, 可能发生溢出;


示例 :

-- Object-C 代码 :

/*************************************************************************
    > File Name: 09_typeAutoConversion.m
    > Author: octopus
    > Mail: octopus_truth.163.com 
    > Created Time: 一  9/ 8 11:18:53 2014
 ************************************************************************/
#import <Foundation/Foundation.h>

 int main(int argc, char **argv)
 {
	@autoreleasepool{
		/* 定义 int 类型变量 */
		int a = 38;
		/* 将 int 类型变量转换为 float, 数值没有变化, 只是类型发生了变化 */
		float b = a;
		/* 打印int -> float 结果, 打印 : 38 */
		NSLog(@"b = %g", b);

		/* 定义 short 类型变量 */
		short c = 38;
		/* 将 short 类型变量赋值给 char 变量, short 自动转化为 char 类型 */
		char d = c;
		/* 打印 short -> char 类型, 打印 : & */
		NSLog(@"d = %c", d);

		double e = 38.3838;
		/* 将 double 类型转为 int 类型, 小数部分自动省略 */
		int f = e;
		/* 打印 double -> int 类型, 打印 : 38 */
		NSLog(@"f = %d", f);

		/* 将 double 类型转为char 类型, 小数部分自动省略, 如果数值过大, 整数部分会溢出 */
		char g = e;
		/* 打印 double -> char, 打印 : & */
		NSLog(@"g = %c", g);

		int h = 40000;
		/* 将 int 类型转为 short 类型, 如果数值过大, 可能会溢出 */
		short i = h;
		/* 打印 int -> short, 溢出 打印 : -25536 */
		NSLog(@"i = %d", i);


	}
 }

-- 编译运行 :

octopus-2:oc octopus$ clang -fobjc-arc -framework Foundation 09_typeAutoConversion.m 
octopus-2:oc octopus$ ./a.out 
2014-09-08 13:08:41.250 a.out[1345:507] b = 38
2014-09-08 13:08:41.252 a.out[1345:507] d = &
2014-09-08 13:08:41.252 a.out[1345:507] f = 38
2014-09-08 13:08:41.253 a.out[1345:507] g = &
2014-09-08 13:08:41.253 a.out[1345:507] i = -25536
octopus-2:oc octopus$ 



2. 强制类型转换


强制类型转换 : 通过 (typeName) 可以强行指定一个变量的类型;


强制转换示例 :

-- Object-C 代码 :

/*************************************************************************
    > File Name: 09_typeConversion.m
    > Author: octopus
    > Mail: octopus_truth.163.com 
    > Created Time: 一  9/ 8 13:27:52 2014
 ************************************************************************/

#import <Foundation/Foundation.h>

int main(int argc, char * argv[])
{
	@autoreleasepool {
		int a = 38;
		int b = 100;

		/* int 类型 与 int 类型相除 还是 int 类型, 结果是 0 */
		float c = a / b;

		/* 先将 a 转为 float 类型, 再进行计算, 得出的结果就是 float 类型 */
		float d = (float)a / b;

		/* 将 float 类型转为 int 类型后再计算, 结果是 39 */
		int e = (int)38.3838 + (int)1.3838;

		NSLog(@"c = %g, d = %g, e = %d", c, d, e );
	}
}


-- 编译运行 :

octopus-2:oc octopus$ ./a.out 
2014-09-08 13:31:44.361 a.out[1391:507] c = 0, d = 0.38, e = 39
octopus-2:oc octopus$ 


3. 类型自动提升


表达式数据类型自动提升规则 :

-- 整型自动提升 : 所有的表达式中得 short 和 char 类型的数据都会被提升为 int 类型;

-- 提升至最高类型 : 算数表达式的数据类型自动提高到表达式中等级最高的数据类型;

-- 类型等级规则 : 从低到高 : short -> int -> long -> longlong -> float -> double -> long double;


代码示例 :

-- Object-C 代码 :

/*************************************************************************
    > File Name: 09_typeAutoPromote.m
    > Author: octopus
    > Mail: octopus_truth.163.com 
    > Created Time: 一  9/ 8 13:44:53 2014
 ************************************************************************/

#import <Foundation/Foundation.h>

int main(int argc, char * argv[])
{
	@autoreleasepool {
		short a = 37;

		/* a - 2 表达式中, a 会自动提升为 int 类型 */
		NSLog(@"计算 a - 2 的数据类型大小 : %ld", sizeof(a - 2));

		/* 整个表达式的数据类型转换为 double 类型 */
		double b = a / 2.0;
		NSLog(@"b = %g", b);
	}
}

-- 编译执行 :

octopus-2:oc octopus$ ./a.out 
2014-09-08 13:50:27.502 a.out[1418:507] 计算 a - 2 的数据类型大小 : 4
2014-09-08 13:50:27.505 a.out[1418:507] b = 18.5
octopus-2:oc octopus$ 


作者:万境绝尘(octopus_truth@163.com)

转载请注明出处:http://blog.csdn.net/shulianghan/article/details/39135079

分享到:
评论

相关推荐

    Object-C语言教程&案例&相关项目资源.docx

    这意味着,任何有效的C语言代码都可以直接嵌入到Objective-C代码中,无需任何转换或修改。 3. **消息传递机制**: - **动态性**:Objective-C采用了基于消息传递的动态运行机制,对象通过发送消息来调用方法。这种...

    swift-一款用Object-C语言编写的视频播放器框架

    然而,这里提到的"swift-一款用Object-C语言编写的视频播放器框架"实际上可能是指一个兼容Swift的Objective-C项目,因为Objective-C是苹果生态系统中传统且广泛使用的编程语言,它与Swift可以无缝集成。 视频播放器...

    objective-c基础教程

    Objective-C是iOS开发中最主要的编程语言之一,在苹果推出Swift之前,几乎所有iOS应用程序都是用Objective-C编写的。虽然现在Swift已经成为苹果官方推荐的首选语言,但许多现有应用仍基于Objective-C编写,且该语言...

    ios+draw+时钟+代码+object-c

    在iOS开发中,Objective-C(OC)是一种常用的编程语言,特别是在构建用户界面时。本教程将深入探讨如何利用OC来创建一个动态时钟应用。在iOS设备上,我们可以通过Core Graphics框架来实现自定义绘图,包括绘制时钟的...

    从C++到Object-C

    从C++到Object-C的知识点涵盖了面向对象编程语言的迁移与适应,特别是对于那些有C++背景的程序员来说,理解Objective-C语言的特点、语法和编程范式是至关重要的。接下来将详细阐述这些知识点: 1. Objective-C语言...

    object-c基础教程

    ### Object-C基础教程知识点 #### 开始吧 - **下载这篇教学**:所有这篇初学者指南的原始码可以从`objc...通过以上内容的学习,读者可以逐步掌握Objective-C的基本概念和技术细节,为深入学习iOS开发打下坚实的基础。

    从C++到Object-c

    Objective-C是苹果公司用于开发Mac OS X和iOS应用程序的主要语言之一,尤其是在结合Cocoa和Cocoa Touch框架时,它能够构建出高度交互和用户友好的应用界面。 ### 二、Objective-C的历史简述 Objective-C最初由...

    Object C语法快速入门

    Objective-C(简称ObjC)是一种基于C语言的面向对象编程语言,主要用于Apple的iOS和macOS平台。以下是一些Object C的基础语法知识点: 1. **方法调用**: - 在ObjC中,方法调用采用消息传递的方式,例如`[object ...

    【课程设计】基于object-c实现人脸识别活体检测眨眼检测ios源码.zip

    在这个基于Object-C实现的人脸识别活体检测及眨眼检测的iOS源码项目中,我们可以深入学习到多个关键的iOS开发和计算机视觉领域的知识点。以下是详细的技术解析: 1. **Objective-C编程语言**:Objective-C是iOS开发...

    从C++到Object-C.pdf

    这种语言最初由Brad Cox在1980年代初开发,并在苹果公司的支持下成为Mac OS X和iOS操作系统的主要开发语言之一。Objective-C与Cocoa框架紧密结合,Cocoa框架提供了一系列API,用于构建应用程序界面和管理底层系统...

    Object-C_Runtime

    后来被苹果公司在1988年收购并成为其开发iOS和macOS应用的主要语言之一。 Objective-C具有高度的动态性,这种动态性主要体现在它的运行时(runtime)系统上。Objective-C的所有特性,包括动态消息传递、类和对象的...

    Object C调用c++例子

    在iOS和Mac开发中,Objective-C(Object C)和C++是两种常见的编程语言。Objective-C作为Apple的原生编程语言,广泛用于构建iOS和Mac应用程序,而C++则因其强大的性能和广泛的库支持,被用于实现底层算法或游戏引擎...

    object-c调用swift的最佳简单实践附件

    在iOS应用开发中,Objective-C(简称OC)和Swift是两种常见的编程语言。Objective-C作为Apple的早期开发语言,有着深厚的API支持,而Swift则以其现代化的语法和更高的安全性受到开发者喜爱。当一个项目中同时包含OC...

    object c语法总结

    总之,Objective-C作为iOS开发的核心语言之一,不仅提供了丰富的特性,还与Cocoa框架紧密结合,为开发者提供了强大的工具和库。通过学习Objective-C的基本语法和高级特性,开发者可以更加高效地构建高质量的应用程序...

    WINDOWS编译object c 的工具库

    这个压缩包"gnustep-devel-1.4.0-setup.exe"很可能是GNUstep的开发工具集,GNUstep是一个开源项目,它实现了Apple的Objective-C编程环境,即Foundation和AppKit框架,这些框架在Mac OS X和iOS开发中起着核心作用。...

    移动开发(IOS) – Objective-C-10-KVC、谓词、KVO与通知 - iOS知识库1

    Objective-C是iOS开发中的主要编程语言,而KVC(Key-Value Coding)、KVO(Key-Value Observing)以及谓词(Predicates)和通知(Notifications)是Objective-C中非常重要的概念,它们提供了灵活的数据访问和对象间...

    Objective-C_2.0_Mac和iOS开发实践指南

    ### Objective-C 2.0 Mac和iOS开发实践指南 #### 第1章 C,Objective-C的基础 **1.1 C程序的结构** - **1.1.1 main函数**:每个C程序都必须有一个`main()`函数,它是程序执行的起点。在Objective-C中,这个规则...

    iOS游戏开发实战入门

    在Objective-C的基础知识部分,本书将向新手介绍这门编程语言,包括它的语法基础、常用的基本数据类型和方法、数组和字典的使用、类的定义和使用,以及内存管理的基础知识。Objective-C作为iOS应用开发的主要编程...

    MMMarkdown:用于将Markdown转换为HTML的Objective-C框架

    在iOS开发中,如果你需要处理Markdown格式的内容,Objective-C框架MMMarkdown就是一种理想的选择。本文将深入探讨MMMarkdown框架的使用、功能以及它在iOS开发中的应用。 MMMarkdown是由Matthew Mueller创建的一个...

    ios-swift-demo13-使用UIDatePicker实现倒计时功能.zip

    在iOS开发中,Swift语言以其简洁的语法和强大的功能被广泛应用。本教程将详细解析如何使用Swift和UIDatePicker组件来实现倒计时功能。UIDatePicker是iOS UI设计中的一个重要元素,它允许用户选择日期或时间,常用于...

Global site tag (gtag.js) - Google Analytics