个性化阅读
专注于IT技术分析

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

下面是位操作符的使用例子:

#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  右到左
乘法 * / %  从左到右
加减 + –  从左到右
移位 << >>  从左到右
关系 < <= > >=  从左到右
相等 == !=  从左到右
按位异或 从左到右
按位或 从左到右
逻辑和 &&  从左到右
逻辑或 ||  从左到右
条件运算 ?:  右到左
赋值 = += -= *= /= %=>>= <<= &= ^= |=  右到左
逗号 从左到右
赞(0)
未经允许不得转载:srcmini » Objective-C六大类型操作符详解 – Objective-C开发教程

评论 抢沙发

评论前必须登录!