模运算符是由
百分号(%)表示。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