第9节:Objective-C 运算符



运算符是一个符号,它告诉编译器执行特定的数学或逻辑操作。 Objective-C语言有丰富的内置运算符并提供了以下几种类型:

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
  • 其他运算符

本教程将逐个讲解算术表达式,关系逻辑,按位分配和其他运算符。

算术运算符

下表列出了所有支持Objective-C语言的算术运算符。假设变量A=10,变量B=20,则:

显示实例

运算符描述示例
+Adds two operandsA + B will give 30
-Subtracts second operand from the firstA - B will give -10
*Multiplies both operandsA * B will give 200
/Divides numerator by denominatorB / A will give 2
%Modulus Operator and remainder of after an integer divisionB % A will give 0
++Increment operator increases integer value by oneA++ will give 11
--Decrement operator decreases integer value by oneA-- will give 9

关系运算符

下表列出了所有支持Objective-C语言的关系运算符。假设变量A=10和变量B=20,则:

显示实例

运算符描述示例
==Checks if the values of two operands are equal or not; if yes, then condition becomes true.(A == B) is not true.
!=Checks if the values of two operands are equal or not; if values are not equal, then condition becomes true.(A != B) is true.
>Checks if the value of left operand is greater than the value of right operand; if yes, then condition becomes true.(A > B) is not true.
<Checks if the value of left operand is less than the value of right operand; if yes, then condition becomes true.(A < B) is true.
>=Checks if the value of left operand is greater than or equal to the value of right operand; if yes, then condition becomes true.(A >= B) is not true.
<=Checks if the value of left operand is less than or equal to the value of right operand; if yes, then condition becomes true.(A <= B) is true.

逻辑运算符

下表列出了所有支持Objective-C语言的逻辑运算符。假设变量A=1,变量B=0,那么:

显示实例

运算符描述示例
&&Called Logical AND operator. If both the operands are non zero then condition becomes true.(A && B) is false.
||Called Logical OR Operator. If any of the two operands is non zero then condition becomes true.(A || B) is true.
!Called Logical NOT Operator. Use to reverses the logical state of its operand. If a condition is true, then Logical NOT operator will make false.!(A && B) is true.

位运算符

位运算符位和位操作执行位。 &, |, 和 ^ 真值表如下:

pqp & qp | qp ^ q
00000
01011
11110
10011

假设,如果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,那么:

显示实例

运算符描述例子
&Binary AND Operator copies a bit to the result if it exists in both operands.(A & B) will give 12, which is 0000 1100
|Binary OR Operator copies a bit if it exists in either operand.(A | B) will give 61, which is 0011 1101
^Binary XOR Operator copies the bit if it is set in one operand but not both.(A ^ B) will give 49, which is 0011 0001
~Binary Ones Complement Operator is unary and has the effect of 'flipping' bits.(~A ) will give -61, which is 1100 0011 in 2's complement form.
<<Binary Left Shift Operator. The left operands value is moved left by the number of bits specified by the right operand.A << 2 will give 240, which is 1111 0000
>>Binary Right Shift Operator. The left operands value is moved right by the number of bits specified by the right operand.A >> 2 will give 15, which is 0000 1111

赋值运算符

支持Objective-C语言的赋值运算符有以下:

显示例子

运算符描述示例
=Simple assignment operator, Assigns values from right side operands to left side operandC = A + B will assign value of A + B into C
+=Add AND assignment operator, It adds right operand to the left operand and assigns the result to left operandC += A is equivalent to C = C + A
-=Subtract AND assignment operator, It subtracts right operand from the left operand and assigns the result to left operandC -= A is equivalent to C = C - A
*=Multiply AND assignment operator, It multiplies right operand with the left operand and assigns the result to left operandC *= A is equivalent to C = C * A
/=Divide AND assignment operator, It divides left operand with the right operand and assigns the result to left operandC /= A is equivalent to C = C / A
%=Modulus AND assignment operator, It takes modulus using two operands and assigns the result to left operandC %= A is equivalent to C = C % A
<<=Left shift AND assignment operatorC <<= 2 is same as C = C << 2
>>=Right shift AND assignment operatorC >>= 2 is same as C = C >> 2
&=Bitwise AND assignment operatorC &= 2 is same as C = C & 2
^=bitwise exclusive OR and assignment operatorC ^= 2 is same as C = C ^ 2
|=bitwise inclusive OR and assignment operatorC |= 2 is same as C = C | 2

其他运算符 ↦ sizeof & 三元

一些其他重要的运算符,包括sizeof 和 ? :支持Objective-C语言。

显示示例

运算符描述例子
sizeof()Returns the size of an variable.sizeof(a), where a is integer, will return 4.
&Returns the address of an variable.&a; will give actual address of the variable.
*Yiibaier to a variable.*a; will yiibaier to a variable.
? :Conditional ExpressionIf Condition is true ? Then value X : Otherwise value Y

Objective-C中的运算符优先级

运算符优先级确定在表达式中的分组。这会影响如何计算一个表达式。某些运算符有比别人更高的优先级,例如,乘法运算符的优先级高于加法运算符:

例如,X=7+3* 2;这里,x是分配13,不是20,因为运算符*的优先级高于+,所以它首先被乘以3 * 2,然后加7。

在这里,运算符具有最高优先级,出现在上面的表中,那些与最低的出现在底部。在一个表达式中,优先级较高的运算符将首先计算。

类别运算符关联性
Postfix () [] -> . ++ - -  Left to right 
Unary + - ! ~ ++ - - (type)* & sizeof Right to left 
Multiplicative  * / % Left to right 
Additive  + - Left to right 
Shift  << >> Left to right 
Relational  < <= > >= Left to right 
Equality  == != Left to right 
Bitwise AND Left to right 
Bitwise XOR Left to right 
Bitwise OR Left to right 
Logical AND && Left to right 
Logical OR || Left to right 
Conditional ?: Right to left 
Assignment = += -= *= /= %=>>= <<= &= ^= |= Right to left 
Comma Left to right 


转自:https://www.yiibai.com/objective_c/objective_c_operators.html#article-start


0