Objective-C表达式-模运算符

2019-04-13 13:17发布

模运算符是由百分号(%)表示。Mike将通过分析范例4-4来确定这种运算符的工作方式:
01 // The Modulus Operator
02 
03 #import
04 
05 int main (int argc, const char * argv[]) {
06     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
07     int a = 25, b = 5, c = 10, d = 7;
08     
09     NSLog(@"a %% b = %i", a % b);
10     NSLog(@"a %% c = %i", a % c);
11     NSLog(@"a %% d = %i", a % d);
12     NSLog(@"a / d * d + a %% d = %i", a / d * d + a % d);
13     
14     [pool drain];
15     return 0;
16 }

最终输出结果:
a % b = 0 a % c = 5 a % d = 4 a / d * d + a % d = 25
在4-4中我们将变量的初始化工作在一条语句内一次性完成。
注意Mike之前提到过,NSLog使用百分号之后的字符来确定如何输出下一个参数。然而,如果它后面紧跟另一个百分号,那么NSLog例程认为你其实想显示百分号,并在程序输出的适当位置插入一个百分号。
其实从输出结果我们可以总结出,模运算符%的功能是计算第一个值除以第二个值的余数。前三句都很简单,现在我们把焦点放在最后一个表达式上。之前我们在整数运算中的例子4-3就因为纯整数余数被完全丢弃,现在a模d得到的余数和 a / d *d 相加正好又得到 a 的值。
关于模运算符的优先级,它和乘法除法相同。
最后分享下在CSDN上传的源码 Modulus_Operator