【IOS 开发学习总结-OC-4】objective-c 运算符

本文详细介绍了Objective-C中的各种运算符,包括算术运算符、赋值运算符(扩展后的赋值运算符)、位运算符、比较运算符、逻辑运算符、逗号运算符和三目运算符,以及它们的结合性和优先级。对于开发者理解和使用Objective-C运算符具有指导意义。

运算符是用于数据运算,赋值和比较等的特殊符号。
objective-c 语言中的运算符有以下几种:

  1. 算术运算符
  2. 赋值运算符
  3. 比较运算符
  4. 逻辑运算符
  5. 位运算符
  6. 类型相关运算符

算术运算符

有7个基本运算符:

  1. +:加法运算符
  2. -:减法运算符(还可以作为负号使用)
  3. *:乘法运算符
  4. /:除法运算符(这里的除法运算符和我们日常中的除法略有不同,如10/4的结果是2,而不是2.5。另外,避免除数为0的情况)
  5. %:取余运算符:该运算符两边的操作数都必须是整数,结果为第一个数除以第二个运算数得到的余数,除数不可为0
  6. ++:自加。单目运算符。可以出现在操作数的任何一边。但作用效果是不同的,如果出现在操作数左边,则先将操作数+1,然后在使用操作数的数值;如果出现在右边,先使用操作数数值后,然后再+1;
  7. –:效果与++类似。将操作数进行-1操作。

赋值运算符

用于为变量指定变量值。objective-c 使用”=”作为赋值运算符。可以将常量值赋给变量,也可以将变量的值赋给变量。赋值运算符支持连续赋值,因为可读性差,故不推荐这样使用。

扩展后的赋值运算符

赋值运算符可以与算术运算符,位运算符结合,扩展成为功能更强大的运算符。只要能使用这种运算符,就推荐使用这种运算符。 扩展后的运算符如下:
这里写图片描述

位运算符

objective-c 支持的位运算符有6个:

  1. &:按位与
  2. |:按位或
  3. ~:按位非
  4. ^:按位异或
  5. <<:左位移运算符(将运算数的二进制码整体左移指定位数,右边空出来的为用0填充)
  6. >>:右位移运算符(将运算数的二进制码整体右移指定位数,左边空出来的以原来的符号位填充,也就是说如果操作数原来是正数,左边就补0,负数,左边就补1)
    特别提示:位移运算符只适合对整形数进行运算。
    运算法则如下图:
    这里写图片描述

这里写图片描述

比较运算符

用于判断2个变量或常量的大小,比较运算的结果是整数值(1代表真,0代表假)。比较运算符有6种:
分别是:>,>=,<,<=,==和!=(不等于)。

逻辑运算符

逻辑运算符用于操作2个布尔型的变量或常量。逻辑运算符主要有4个:

  1. &&(与):必须2个操作数都是真,才为真,否则返回假;
  2. ||(或):只要2个操作数中有一个为真,就可以返回真,否则为假;
  3. !(非):对操作数取反。如操作数为真,则返回假,反之亦然。
  4. ^(异或):2个操作数,相同返回假,不同返回真。

**特别提示:**objective-c 并没有提供真正的布尔型数据,通常会用1代表真,用0代表假。除此之外,objective-c 会把任意二进制位后8位不为0的整数值当成真。

逗号运算符

逗号运算符用于将多个表达式”连接”起来,而整个逗号表达式将返回最后一个表达式的值。例如如下代码:

int a=(4*6,4>2)//就算的结果是 a 的值为真,也就是1
NSLog(@"%d",a);

需要指出的是:并不是所有出现逗号的地方都是逗号运算式,有时逗号只是起到分割的作用。

三目运算符

三目运算符(?:)的语法格式为:
(expression)?if-true-statement :if-false-statement;
如果前面的条件判断结果为真,就执行冒号前的值,否则执行冒号后面的值。

大部分时候,三目运算符相当于 if else 的简化写法。二者的区别在于:
后者 if 后的代码块可以有多个语句,而前者不支持多个语句。
三目运算符支持嵌套。示例代码:

    NSString * str = 5 > 3 ? @"5大于3" : @"5不大于3";
    // 输出"5大于3"
    NSLog(@"%@" , str);
    // 输出"5大于3"
    5 > 3 ? NSLog(@"5大于3") : NSLog(@"5小于3");
    int a = 5;
    int b = 5;
    // 下面将输出a等于b
    a > b ? NSLog(@"a大于b") : (a < b ? NSLog(@"a小于b") : NSLog(@"a等于b"));

运算符的结合性和优先级

所有的数学运算符都认为是从左到右运算的,OC 语言的大部分运算符也都是 从左向右结合的。只有单目运算符,赋值运算符和三目运算符例外(从右向左)
运算符有不同的优先级,即在表达式的运算中有运算顺序。下图中的优先级是从高到底的。
这里写图片描述
这里写图片描述

特别提示:

  1. 不要把表达式写得过于复杂。如果复杂,把它分成几步来完成。
  2. 不过过多依赖运算符的优先级来控制运算执行顺序,尽量使用()来控制表达式执行顺序的同时提高可读性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值