oc之数据类型转换规则

对含所有不同类型数据的表达式求值时,Objective-C编译器会遵循一些非常严格的规则,下面总结了表达式求值的过程中,不同类型的操作数发生转换的先后顺序:

1、如果其中一个操作数是long double类型的,另一操作数被转为long double型,则计算结果也是这种类型。

2、如果其中一个操作数是double型,另一操作数转换为double型,则计算结果也是这种类型。

3、如果其中一个操作数是float型,另一操作数转换为float型,则计算结果也是种类型。

4、如果其中一个操作数是Bool、char、short int、 bit field或枚举数据类型,则全部转换为int 型。

5、如果其中一个操作数是long int/long long int 型,另一操作数转换为long int/long long int型,计算结果也是种类型。

6、如果到达这一步,则可知两个操作数均为int型,计算结果也是这种类型。

f为float型,i为int型,l为long int型,s为short int 型

则:f*i+l/s  输出为float型

分析:f*i是float型;

l/s s是short int转换为int,后根据5 l/s转换为long int,在根据3转换为float,最后输出为float型。

oc之数据类型转换规则

时间: 2024-10-08 13:51:43

oc之数据类型转换规则的相关文章

OC常用数据类型大全解

UI基础 OC常用数据类型 Block Block封装了一段代码,可以在任何时候执行 Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值.它和传统的函数指针很类似,但是有区别:block是inline(内联函数)的,并且默认情况下它对局部变量是只读的 苹果官方建议尽量多用block.在多线程.异步任务.集合遍历.集合排序.动画转场用的很多 Blocks的定义 Blocks的定义: int (^MySum)(int, int) = ^(int a, int b) { re

OC的数据类型补充

OC的数据类型补充 1. Block Block封装了一段代码,可以在任何时候执行 Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或者返回值 苹果官方建议尽量多用Block.在多线程.异步任务.集合遍历.集合排序.动画专场用的很多 Block跟函数很像: 可以保存代码 有返回值 有形参 调用方式一样 补充词汇:templates 模板.minus减法 //定义Block变量 void(^myblock)() = ^{ NSLog(@"--------------------

oc基本数据类型

布尔数据类型 BOOL(YES(1)/NO(0)) NSLog() 等同于 printf()NS: 来源于工具包还被称为NextSTEP的时候 使用前缀避免名称冲突.NSLog(@"Hello,Objective-C!”); 基本上所有的变量都是以@开头.字符串使用@开头.@符号意味着引号内的字符串应作为Cocoa的NSString元素来处理oc中的@符号看成是对C语言的扩展. for(int i=0;i<5;i++){ NSLog(@"%d\n",i);} NSLog

Javascript数据类型转换规则

前言 Javascript有7种数据类型,包括5种原始类型(也叫原始值)number.Boolean.string.null.undefined和2种复合类型object.array,它们之间可以根据某种规则相互转换.<Javascript权威指南>列出了在Javascript中如何进行类型转换,如下表: 其中原始值之间的转换没什么可说的,记住就好了,我们要关注的是复合值(即对象)与原始值之间的转换.原始值转换成对象直接调用Object()方法即可(null和undefined不可调用该方法)

OC基础数据类型之字符串,数组和字典

//-------------字符串----------------- //字符串的初始化: //1: NSString *string = @"我是非凡程序员!"; NSLog(@"%@",string); //2: NSString *string2 = [NSString stringWithFormat:@"我在非凡学习了%i个月",1]; NSLog(@"%@",string2); //输出字符串长度: long l

OC基础数据类型之NSNumber

假如你能够很轻松的理解NSString的定义和用法,那么NSNumber的话联想一下你就大概能够明白其中的道理和关系了. 首先你必须知道C语言的基础数据类型在OC中不是所有地方都支持使用,那么碰到例如copy等不支持使用的情况,我们就必须用OC的基本数据类型了. 那么OC的基本数据类型是什么?其实它就是将C语言的数据类型全部打包封装到了一个类里面.这个类里面各种各样的C语言基础数据类型都有,例如int,float,double等 当然OC里NSNumber的功能相对要强大很多,它不仅仅包含了C的

捋一捋Javascript数据类型转换规则

一.数据类型 5种基本数据类型:Null/Undefined/String/Boolean/Number 1种复杂数据类型:Object 二.数据类型检测 传送门<四种JS数据类型方式及其局限性> 1.typeof 2.instanceof/constructor 3.Object.prototype.toString.call(value) 4.Object.prototype.toString 三.数据类型转换 JS内部提供不同数据类型的自动转换机制,在某处预期为某种类型而不是某种类型时,

OC基本数据类型,CGGeometry类定义几何元素的结构和操作几何元素的函数

官方地址: http://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CGGeometry/Reference/reference.html 1.数据类型: CGFloat: 浮点值的基本类型CGPoint: 表示一个二维坐标系中的点CGSize: 表示一个矩形的宽度和高度CGRect: 表示一个矩形的位置和大小 typedef float CGFloat;// 32-bit typedef d

OC变量数据类型

// //  main.m //  OC10变量数据类型 // //  Created by Zoujie on 15/9/4. //  Copyright (c) 2015年 Zoujie. All rights reserved. // enum flag {     FIREST,     SECOND,     THIRD,     FOURTH=5,     FIFTH,      }ENDOFDATA; //未命名的枚举类型 enum {     up,     down,