免费开源的iOS开发学习平台

OC算数表达式:2-数据类型转换

在实际的开发过程中,我们有时会需要把一个数据类型的变量强制转换成另外一个数据类型的变量,例如我们会把一个float型的变量强制转换成int型的整型变量。这就涉及到数据类型的转换操作。

强制类型转换

在Objective-C语言中,类型转换的一般形式为: (类型说明符) (表达式),功能是把表达式的运算结果强制转换成类型说明符所表示的类型。

例如:

(float)    a      //把变量a转换为浮点型
(int)(x + y)     //把x+y的结果转换为整型

强制类型转换运算符是一元运算符,行为和其他一元运算符一样,并不会对变量本身的值造成改变,就像-a永远不会影响a的值,因此,(float) a也不会影响a的值。

类型转换的常见形式

类型转换时,存在如下几种常见的形式:

  • 浮点值赋给整型变量:数值的小数部分会被删节,整数部分不变。

  • 整型值赋给浮点型变量:数值大小不发生变化,数据类型变成浮点型。

  • id类型的对象转换成特定类型的对象。

示例代码

下方的示例代码演示了数据类型转换的实现方法以及几种常见的类型转换形式。

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        int a = 10, b = 4;
        float c = 2.0, d = 1.5;
        // 强制类型转换
        NSLog(@"(float)(a + b) = %f", (float)(a + b));  // 数值大小不发生变化,数据类型变成浮点型。
        NSLog(@"(int)(c + d) = %d", (int)(c + d));  // 数值的小数部分会被删节,整数部分不变。
        // 打印a, b, c, d的值
        NSLog(@"a = %d, b = %d, c = %f, d = %f", a, b, c, d);
        // 类型转换:float -> int
        int intResult;
        intResult = d;  // 将float类型的变量赋给int型变量,数值的小数部分会被删节。
        NSLog(@"(intResult = d) --> intResult = %d", intResult);
        // 类型转换:int -> float
        float floatResult;
        floatResult = a;    // 将int型变量赋给float型变量,数值大小不发生变化,数据类型变成浮点型。
        NSLog(@"(floatResult = a) --> floatResult = %f", floatResult);
        // 类型转换:id -> 特定类型的对象
        id object;
        NSString *string = @"99iOS";
        object = (NSString *) string;
        NSLog(@"id object = %@",object);
    }
    return 0;
}

运行结果:

代码下载

https://github.com/99ios/2.2.2