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