上一章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 |
下面是位操作符的使用例子:
#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 | 右到左 |
乘法 | * / % | 从左到右 |
加减 | + – | 从左到右 |
移位 | << >> | 从左到右 |
关系 | < <= > >= | 从左到右 |
相等 | == != | 从左到右 |
按位异或 | ^ | 从左到右 |
按位或 | | | 从左到右 |
逻辑和 | && | 从左到右 |
逻辑或 | || | 从左到右 |
条件运算 | ?: | 右到左 |
赋值 | = += -= *= /= %=>>= <<= &= ^= |= | 右到左 |
逗号 | , | 从左到右 |
评论前必须登录!
注册