Objective-C六大类型操作符详解 – Objective-C开发教程

上一章Objective-C开发教程请查看:Objective-C使用变量和常量
如果你的C语言基本功力够的话,本节内容基本可以跳过,因为OC的操作符基本和C语言是一样的。操作符是用来执行指定的属性或逻辑运算的,不用说这些基本都是常用的了,写任何代码无形中就会用到,下面是六大类型的操作符:

  • 算术操作符
  • 关系操作符
  • 逻辑操作符
  • 位操作符
  • 赋值操作符
  • 混合操作符
算术操作符下面是所有可用的算术操作符,其中A=10,B=20:
操作符解释例子
+将两个操作数相加A + B => 30
第一个操作数减去第二个操作数A – B => -10
*两个操作数相乘A * B => 200
/第一个操作数除以第二个操作数B / A => 2
%取模运算,也就是求余数B % A => 0
++自增运算符A++ => 11
自减运算符A– => 9
下面是算术运算符的使用例子:
#import < Foundation/Foundation.h>int main() { int a = 21; int b = 10; int c ; c = a + b; NSLog(@"c: %d\n", c ); c = a - b; NSLog(@"c: %d\n", c ); c = a * b; NSLog(@"c: %d\n", c ); c = a / b; NSLog(@"c: %d\n", c ); c = a % b; NSLog(@"c: %d\n", c ); c = a++; NSLog(@"c: %d\n", c ); c = a--; NSLog(@"c: %d\n", c ); }

关系操作符下面是OC中所有可用的关系操作符,其中A=10,B=20:
操作符解释例子
==两个操作数相等返回true,否则返回false.(A == B) => false.
!=两个操作数不相等返回true,否则返回false.(A != B) => true.
> 第一个操作数大于第二个操作数返回true,否则返回false.(A > B) => false.
< 第一个操作数小于第二个操作数返回true,否则返回false.(A < B) => true.
> =第一个操作数大于或等于第二个操作数返回true,否则返回false.(A >= B) => false
< =第一个操作数小于或等于第二个操作数返回treu,否则返回false.(A < = B) => true.
下面是使用关系操作符的实例:
#import < Foundation/Foundation.h>int main() { int a = 21; int b = 10; if( a == b ) { NSLog(@"a == b\n" ); } else { NSLog(@"a != b\n" ); }if ( a < b ) { NSLog(@"a < b\n" ); } else { NSLog(@"a不小于b\n" ); } if ( a > b ) { NSLog(@"a大于b\n" ); } else { NSLog(@"a不大于b\n" ); }a = 5; b = 20; if ( a < = b ) { NSLog(@"a小于或等于b\n" ); }if ( b >= a ) { NSLog(@"b大于或等于a\n" ); } }

逻辑操作符逻辑操作最基本是三种操作:与、或、非,下面是这三种操作符的解释,其中A=1,B=0。和C语言一样,OC非0都是true。
操作符解释例子
& & 逻辑与操作,如果两个操作数都是非0,那么返回true,否则返回false.(A & & B) => false.
||逻辑或操作,如果两个操作数其中有一个是非0,那么返回true,否则返回false.(A || B) => true.
!逻辑非操作,true变成false,false变成true.!(A & & B) is true.
逻辑操作符的使用例子如下:
#import < Foundation/Foundation.h>int main() { int a = 5; int b = 20; if ( a & & b ) { NSLog(@"条件为true\n" ); }if ( a || b ) { NSLog(@"条件为true\n" ); }a = 0; b = 10; if ( a & & b ) { NSLog(@"条件为true\n" ); } else { NSLog(@"条件不为true\n" ); }if ( !(a & & b) ) { NSLog(@"条件为true\n" ); } }

位操作符位操作符是按二进制位的形式来操作数的,例如011010110这样的二进制数,也有类似与或非的操作,例如01和10,与& 操作表示,对应的位上(从右到左)的两个二进制位进行运算,两位同时为1才为1.
下面是OC中所有可用的位操作符(A=60,B=13):
操作符解释例子
& 二进制与操作,两位为1则结果为1,否则为0.(A & B) => 12, 即 0000 1100
|二进制或操作,两位有一位为1则结果为1,否则为0.(A | B) => 61, 即 0011 1101
^二进制异或操作,两位不同则为1,否则为0.(A ^ B) => 49, 即 0011 0001
~二进制补码操作符,可以翻转位,0变成1,1变成0.(~A ) => -61, 即 1100 0011.
< < 二进制左移操作符,右边增加的位用0补.A < < 2 => 240, 即 1111 0000
> > 二进制右移操作符.A >> 2 => 15, 即 0000 1111
【Objective-C六大类型操作符详解 – Objective-C开发教程】下面是位操作符的使用例子:
#import < Foundation/Foundation.h>int main() { unsigned int a = 60; /* 60 = 0011 1100 */ unsigned int b = 13; /* 13 = 0000 1101 */ int c = 0; c = a & b; /* 12 = 0000 1100 */ NSLog(@"c: %d\n", c ); c = a | b; /* 61 = 0011 1101 */ NSLog(@"c: %d\n", c ); c = a ^ b; /* 49 = 0011 0001 */ NSLog(@"c: %d\n", c ); c = ~a; /*-61 = 1100 0011 */ NSLog(@"c: %d\n", c ); c = a < < 2; /* 240 = 1111 0000 */ NSLog(@"c: %d\n", c ); c = a >> 2; /* 15 = 0000 1111 */ NSLog(@"c: %d\n", c ); }

赋值操作符
操作符解释例子
= 简单赋值运算符,将右侧操作数的值赋值给左侧操作数C = A + B
+=添加和赋值运算符,它将右操作数添加到左操作数并将结果赋值给左操作数C += A 等价于 C = C + A
-=减法和赋值运算符,它从左操作数中减去右操作数并将结果赋值给左操作数C -= A 等价于 C = C – A
*=乘法和赋值运算符,它将右操作数与左操作数相乘,并将结果赋给左操作数C *= A 等价于 C = C * A
/=除法和赋值运算符,它将左操作数和右操作数分开,并将结果赋给左操作数C /= A 等价于 C = C / A
%=模和赋值运算符,它使用两个操作数取模并将结果赋给左操作数C %= A 等价于 C = C % A
< < =左移位和赋值运算符C < < = 2 等价于 C = C < < 2
> > =右移位和赋值运算符C >>= 2 等价于 C = C >> 2
& =位与和赋值运算符C & = 2 等价于 C = C & 2
^=位异或和赋值运算符C ^= 2 等价于 C = C ^ 2
|=位或和赋值运算符C |= 2 等价于 C = C | 2
混合操作符
操作符解释Example
sizeof()返回变量的大小。sizeof(a),其中a是整数,将返回4。
& 返回变量的地址。&a; 将给出变量的实际地址。
*指向变量的指针。*a; 将指向一个变量.
? :条件表达式如果条件为真?然后是值X:否则是值Y
操作符优先级
类别 操作符  结合性
后缀 () [] -> . ++ – –   从左到右
一元 + – ! ~ ++ – – (type)* & sizeof  右到左
乘法 * / %  从左到右
加减 + –   从左到右
移位 < < > >   从左到右
关系 < < = > > =  从左到右
相等 == !=  从左到右
按位异或 从左到右
按位或 从左到右
逻辑和 & &   从左到右
逻辑或 ||  从左到右
条件运算 ?:  右到左
赋值 = += -= *= /= %=> > = < < = & = ^= |=  右到左
逗号 从左到右

    推荐阅读