Objective-C 运算符
-
运算符
运算符是一个符号,告诉编译器执行特定的数学或逻辑操作。Objective-C语言具有丰富的内置运算符,并提供以下类型的运算符-- 算术运算符
- 关系运算符
- 逻辑运算符
- 按位运算符
- 赋值运算符
- 杂项运算符
本教程将逐一说明算术,关系,逻辑,按位,赋值和其他运算符。 -
算术运算符
下表显示了Objective-C语言支持的所有算术运算符。假设变量A持有10,变量B持有20,则-操作符 描述 示例 + 加法-在运算符的任一侧添加值。 a + b得30 - 减法-从左手操作数中减去右手操作数。 a - b得-10 * 乘法-将运算符两侧的值相乘。 a * b得200 / 除法-将左操作数除以右操作数。 b / a得2 % 模数-将左操作数除以右操作数,并返回余数。 b %a得0 ++ 增量运算符将整数值增加1 a++ 得11 -- 减量运算符将整数值减1 a-- 得 9 -
关系运算符
下表显示了Objective-C语言支持的所有关系运算符。假设变量A持有10,变量B持有20,则-操作符 描述 示例 == 检查两个操作数的值是否相等;如果是,则条件为真。 (A == B)为false。 != 检查两个操作数的值是否相等;如果值不相等,则条件为真。 (A!= B)为true。 > 检查左操作数的值是否大于右操作数的值;如果是,则条件为真。 (A > B)为false。 < 检查左操作数的值是否小于右操作数的值;如果是,则条件为真。 (A < B )为true。 >= 检查左操作数的值是否大于或等于右操作数的值;如果是,则条件为真。 (A >= B)为false。 <= 检查左操作数的值是否小于或等于右操作数的值;如果是,则条件为真。 (A <= B)为true。 -
赋值运算符
假设变量a持有10,变量b持有20,则-操作符 描述 示例 = 简单赋值运算符,用于将值从右侧操作数分配到左侧操作数。 c = a + b会将a + b的值赋给c += 添加AND赋值运算符,将右操作数添加到左操作数,并将结果分配给左操作数。 c += a等效于c = c + a -= 减去AND赋值运算符,从左侧操作数中减去右侧操作数,然后将结果分配给左侧操作数。 c -= a等效于c = c - a *= 将AND赋值运算符相乘,将右操作数与左操作数相乘,然后将结果分配给左操作数。 c *= a等效于c = c * a /= 除法AND赋值运算符,将左操作数除以右操作数,并将结果分配给左操作数。 c /= a等效于c = c / a %= 模AND赋值运算符,使用两个操作数获取模数,并将结果分配给左操作数。 c %= a等效于c = c % a <<= 左移AND赋值运算符 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 等效 -
按位运算符
按位运算符对位进行运算并执行逐位运算。假设a = 60; 和b = 13; 现在以二进制格式,它们将如下所示-a = 0011 1100 b = 0000 1101 ------------------ a&b = 0000 1100 a|b = 0011 1101 a^b = 0011 0001 ~a = 1100 0011
下表列出了Objective-C语言支持的按位运算符。假设变量A持60,变量B持13,然后-操作符 描述 示例 & 如果两个操作数中都存在二进制位1,则会将一位复制到结果中。 (a&b)将得到12,即0000 1100 | 如果任一操作数中存在二进制1,则会对其进行复制。 (a | b)将给出61,即0011 1101 ^ 如果在一个操作数中设置了该位,但不是在两个操作数中都设置了位,则二进制异或运算符将复制该位。 (a ^ b)将得出49,即0011 0001 ~ 二进制补码运算符是一元的,具有“翻转”位的作用。 (~a)将给出-61,这是2的补码形式的1100 0011(由于带符号的二进制数)。 << 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 << 2将得到240,即1111 0000 >> 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 a >> 2将得到15,即0000 1111 -
逻辑运算符
下表显示了Objective-C语言支持的所有逻辑运算符。假设变量A保持1,变量B保持0,则-操作符 描述 示例 && 称为逻辑和运算符。如果两个操作数都不为零,则条件变为true。 (a && b)是false。 || 称为逻辑或运算符。如果两个操作数中的任何一个都不为零,则条件变为true。 (a || b)是true。 ! 称为逻辑非运算符。用于反转其操作数的逻辑状态。如果条件为真,则逻辑非运算符将为假。 !(a && b) 是true。 -
三元运算符和sizeof
还有一些其他重要的操作符,包括sizeof和?:和取址符&由Objective-C语言支持。操作符 描述 示例 ?: 条件表达式 (如果条件为真 ? 然后值X : 否则值Y sizeof() 返回变量的大小。 sizeof(a),其中a为int,将返回4。 & 返回变量的地址。 &a; 将给出变量a的实际地址。 * 指向变量的指针。 *a; 将指向变量a。 -
运算符优先级
运算符优先级确定表达式中术语的分组。这会影响表达式的求值方式。某些运算符具有更高的优先级;例如,乘法运算符的优先级比加法运算符高。例如,x = 7 + 3 * 2; 在这里,x被赋值为13,而不是20,因为运算符*的优先级比+高,因此它首先与3 * 2相乘,然后加到7。在这里,优先级最高的运算符出现在表格的顶部,而优先级最低的运算符出现在表格的底部。在表达式中,优先级更高的运算符将首先被计算。操作符 描述 () [] -> . ++ -- 左到右 + - ! ~ ++ -- (type)* & sizeof 右到左 * / % 左到右 + - 左到右 << >> 左到右 < <= > >= 左到右 == != 左到右 ^ 左到右 | 左到右 && 左到右 || 左到右 ?: 右到左 = += -= *= /= %= >>= <<= &= ^= |= 右到左 , 左到右