上一章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
|
右到左
|
乘法
|
* / %
|
从左到右
|
加减
|
+ –
|
从左到右
|
移位
|
<
<
>
>
|
从左到右
|
关系
|
<
<
= >
>
=
|
从左到右
|
相等
|
== !=
|
从左到右
|
按位异或
|
^
|
从左到右
|
按位或
|
|
|
从左到右
|
逻辑和
|
&
&
|
从左到右
|
逻辑或
|
||
|
从左到右
|
条件运算
|
?:
|
右到左
|
赋值
|
= += -= *= /=
%=>
>
= <
<
= &
= ^= |=
|
右到左
|
逗号
|
,
|
从左到右
|
推荐阅读