在Objective-C中,事实上和所有程序语言一样,在两个数相加时使用加号(+),在两个数相减时使用减号(-),在两个数相乘时使用乘号(*),在两个数相除时使用除号(/)。这些运算符称为二元算术运算符,因为它们运算两个值或项。至于在算术表达式的实际运算中,优先级如何界定?同小学学的基本四则运算,优先级较高的运算符首先求值。如果表达式包含优先级相同的运算符,可按照从左到右或从右到左的方向求值。
下面是范例代码4-2:
01 // Illustrate the use of various arithmetic operators
02
03 #import <Foundation/Foundation.h>
04
05 int main (int argc, const char * argv[])
06 {
07 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
08
09 int a = 100;
10 int b = 2;
11 int c = 25;
12 int d = 4;
13 int result;
14
15 result = a - b; //subtraction
16 NSLog(@"a - b = %i", result);
17
18 result = b * c; //multiplication
19 NSLog(@"b * c = %i", result);
20
21 result = a / c; //division
22 NSLog(@"a / c = %i", result);
23
24 result = a + b * c; //precedence
25 NSLog(@"a + b * c = %i", result);
26
27 NSLog(@"a * b + c * d = %i", a * b + c * d);
28
29 [pool drain];
30 return 0;
31 }
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
a + b * c 等价于 a + (b * c),如果要让a和b首先相加再乘以c,就必须使用(a + b) * c
代码第27行可发现,对NSLog指定表达式作为参数时,无需将该表达式的结果先指派给一个变量,这种做法是完全合法的。
最终输出结果如下:
a - b = 98
b * c = 50
a / c = 4
a + b * c = 150
a * b + c * d = 300
Mike在CSDN上传的源代码链接