Objective-C 2.0 学习笔记三(数据类型和表达式)
2011-10-18 13:58
309 查看
变更履历
版本:v1.0简介
这一章主要描述 OC 的基本数据类型,并描述一些用于构成算术表达式的基本规则。数据类型和常量
在 Objective-C 中,任何数字、单个字符或者字符串通常都成为常量。int、float、double、char
每一个值,不管是字符、整数还是浮点数字,都有与其对应的值域,这个值域与存储特定类型的值而分配的内存有关。一般来说,语言中没有规定这个量,它通常依赖于所运行的计算机,因此叫做设备或机器相关量。这也是告诉我们,做开发时,尽量不要去假定数据类型的大小。
id 类型
id 数据类型可以存储任何类型的对象,它是 OC 中十分重要的特性,是多态和动态绑定的基础。-(id) newObject: (int) type { ... }
基本数据类型
类型 | 实例常量 | NSLog 字符 |
---|---|---|
char | 'a'、'\n' | %c |
short int | - | %hi、%hx、%ho |
unsigned short int | - | %hu、%hx、%ho |
int | 12、-97、0xFFE0、0177 | %i、%x、%o |
unsigned int | 12u、100U、0XFFu | %u、%x、%o |
long int | 12L, -2001, 0xffffL | %li, %lx, %lo |
unsigned long int | 12UL, 100ul, 0xffeeUL | %lu, %lx, %lo |
long long int | 0xe5e5e5e5LL, 500ll | %lli, %llx, &llo |
unsigned long long int | 12ull, 0xffeeULL | %llu, %llx, %llo |
float | 12.34f, 3.1e-5f, 0x1.5p10, 0x1P-1 | %f, %e, %g, %a |
double | 12.34、3.1e-5、0x.1p3 | %f、%e、%g、%a |
long double | 12.34L、3.1e-5l | %Lf、$Le、%Lg |
id | nil | %p |
算数表达式
整数值和浮点值的互相转换// Basic conversions in Objective-C #import <Foundation/Foundation.h> int main (int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; float f1 = 123.125, f2; int i1, i2 = -150; i1 = f1; // floating to integer conversion NSLog (@"%f assigned to an int produces %i", f1, i1); f1 = i2; // integer to floating conversion NSLog (@"%i assigned to a float produces %f", i2, f1); f1 = i2 / 100; // integer divided by integer NSLog (@"%i divided by 100 produces %f", i2, f1); f2 = i2 / 100.0; // integer divided by a float NSLog (@"%i divided by 100.0 produces %f", i2, f2); f2 = (float) i2 / 100; // type cast operator NSLog (@"(float) %i divided by 100 produces %f", i2, f2); [pool drain]; return 0; }
在 OC 中,只要将浮点值赋给整形变量,数字的小数部分都将被删除。把整型变量指派给浮点变量不会引起数值的任何改变。
算术表达式的两点规则
当表达式中的两个运算数是整数(),该运算就将在整数运算规则下进行。因此,由运算产生的任何小数部分都将被删除,即便将结果指配给一个浮点变量也是如此。可以参见程序中的第三个输出。
当表达式中的两个运算数有一个是浮点变量或常量,那么这一运算将作为浮点运算来处理。可以参见程序中的第四个输出。
类型转换运算符
与其它语言一样,(float) a 可作为一个强制类型转换。用法如下:
int a = (int) 29.55 + (int) 21.99; float f = (float) 6 / (float) 4; id number; Fraction *fraction; fraction = (Fraction *) number;
赋值运算符
OC 支持 op= 这种语法,op 可以是任何算术运算符,包括 +、-、*、/ 和 %。此外,op 还可以是任何用于移位和屏蔽操作的运算符。counter -=5;
位运算符
符号 | 运算 | 符号 | 运算 |
& | 按位与 | ~ | 一次求反 |
| | 按位或 | << | 左移位 |
^ | 按位异或 | >> | 右移位 |
从值的低位移出得位将丢失。把无符号的值向右移位总是在左侧(高位)移入0。对于有符号值而言,左侧移入1还是0依赖于被移动数字的符号,还取决于该操作在计算机上的实现方式。如果符号位是0(表示正数),不管那种机器都将移入0。然而,如果符号位是1,则不一定。前一类型的运算符通常称为算术右移,后者通常称为逻辑右移。
不要去假设系统使用算术右移还是逻辑右移,这可能会造成未知的错误。
类型 _Bool、_Complex 和 _Imaginary
用于处理 Boolean(0 或 1)值的 _Bool,以及分别用于处理复数和抽象数字的 _Complex 和 _Imaginary。OC 推荐使用 BOOL 数据类型来代替 _Bool 来处理 Boolean 值。BOOL 本身实际上并不是真正的数据类型,它只是 char 数据类型的别名,通过关键字 typedef 实现。
相关文章推荐
- Objective-C 学习笔记 4 数据类型和表达式
- Objective-C学习笔记:数据类型和表达式
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第四章 数据类型和表达式 课后练习题 4-10
- 黑马程序员——Objective-C程序设计(第4版)学习笔记之04-数据类型和表达式——黑马 IOS 技术博客
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第四章 数据类型和表达式
- Objective-C学习笔记三:基本数据类型和表达式
- Objective-C学习笔记(四)-数据类型和循环结构
- Objective-C学习笔记(五)——数据类型与限定词
- 【Objective-C学习笔记】变量和基本的数据类型
- Programming in Objective-C 学习笔记04——变量和数据类型
- [学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十章 变量和数据类型
- Objective-C学习笔记 变量和基本的数据类型
- objective-c学习笔记第七章《objective-c 数据类型和变量与java中的区别》
- iOS-Objective-C 学习笔记一:数据类型
- Objective-C学习笔记(五)——数据类型与限定词
- Objective-C学习笔记--一些有用的数据类型
- objective-c学习笔记第二章《objective-c中类型,表达式与java中的区别》
- Objective-C学习笔记12:高级数据类型一
- C++的学习笔记(第二章:基本数据类型与表达式)
- 黑马程序员——Objective-C程序设计(第4版)学习笔记之10-变量和数据类型——黑马 IOS 技术博客