详解Objective-C运算符

资讯 · jiangjie1901 · 发布于 1 年前 · 783 次阅读

运算符是一个符号,它告诉编译器执行特定的数学或逻辑操作。 Objective-C语言http://www.maiziedu.com/course/495/有丰富的内置运算符并提供了以下几种类型: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其他运算符

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

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

  • Adds two operands A + B = 30 – Subtracts second operand from the first A – B = -10
  • Multiplies both operands A * B = 200 / Divides numerator by denominator B / A = 2 % Modulus Operator and remainder of after an integer division B % A = 0 ++ Increments operator increases integer value by one A++ = 11 — Decrements operator decreases integer value by one A– = 9

例子 尝试下面的例子就明白了在Objective-C编程语言的所有算术运算符:

#import

main() { int a = 21; int b = 10; int c ;

c = a + b; NSLog(@"Line 1 - Value of c is %d", c ); c = a - b; NSLog(@"Line 2 - Value of c is %d", c ); c = a * b; NSLog(@"Line 3 - Value of c is %d", c ); c = a / b; NSLog(@"Line 4 - Value of c is %d", c ); c = a % b; NSLog(@"Line 5 - Value of c is %d", c ); c = a++; NSLog(@"Line 6 - Value of c is %d", c ); c = a--; NSLog(@"Line 7 - Value of c is %d", c );

}

当编译和执行上述程序,它会产生以下结果:

Line 1 - Value of c is 31 Line 2 - Value of c is 11 Line 3 - Value of c is 210 Line 4 - Value of c is 2 Line 5 - Value of c is 1 Line 6 - Value of c is 21 Line 7 - Value of c is 22

关系运算符 下表列出了所有支持Objective-C语言的关系运算符。假设变量A=10和变量B=20,则: 运算符 描述 示例 == 检查是否两个操作数的值等于或不等于,如果是的话那么条件为真。 (A == B) is not true. != 检查两个操作数的值等于或不相等,如果值不相等,则条件为真。 (A != B) is true.

检查是否左操作数的值大于右操作数的值,如果是的话那么条件为真。 (A > B) is not true. < 检查是否左操作数的值小于右操作数的值,如果是的话那么条件为真。 (A < B) is true. = 检查是否左操作数的值大于或等于右操作数的值,如果是的话那么条件为真。 (A >= B) is not true. <= 检查是否左操作数的值小于或等于右边的操作数的值,如果是的话那么条件为真。 (A <= B) is true.

例子 尝试下面的例子就明白了在Objective-C编程语言的所有关系运算符:

#import

main() { int a = 21; int b = 10; int c ;

if( a == b ) { NSLog(@"Line 1 - a is equal to b" ); } else { NSLog(@"Line 1 - a is not equal to b" ); } if ( a < b ) { NSLog(@"Line 2 - a is less than b" ); } else { NSLog(@"Line 2 - a is not less than b" ); } if ( a > b ) { NSLog(@"Line 3 - a is greater than b" ); } else { NSLog(@"Line 3 - a is not greater than b" ); } / Lets change value of a and b / a = 5; b = 20; if ( a <= b ) { NSLog(@"Line 4 - a is either less than or equal to b" ); } if ( b >= a ) { NSLog(@"Line 5 - b is either greater than or equal to b" ); } } 当编译和执行上述程序,它会产生以下结果: Line 1 - a is not equal to b Line 2 - a is not less than b Line 3 - a is greater than b Line 4 - a is either less than or equal to b Line 5 - b is either greater than or equal to b

逻辑运算符 下表列出了所有支持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.

位运算符 位运算符位和位操作执行位。 &, |, 和 ^ 真值表如下: p q p & q p | q p ^ q 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 0 1 1 假设,如果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 operand C = 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 operand C += 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 operand C -= 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 operand C = 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 operand C /= A is equivalent to C = C / A %= Modulus AND assignment operator, It takes modulus using two operands and assigns the result to left operand C %= A is equivalent to C = C % A <<= Left shift AND assignment operator C <<= 2 is same as C = C << 2

= Right shift AND assignment operator C >>= 2 is same as C = C >> 2 &= Bitwise AND assignment operator C &= 2 is same as C = C & 2 ^= bitwise exclusive OR and assignment operator C ^= 2 is same as C = C ^ 2 |= bitwise inclusive OR and assignment operator C |= 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 Expression If 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

原文来自:codecloud

共收到 0 条回复
回帖