%是取余数。
假定 k=n1%n2 ; 事实上就表示为: n1 = n2*已知整数m+k ; 由于%运算符只关心k,所以已知整数m就给忽略了。
现在分析 x + a%3*(int)(x=y)%2/4 是如何求出2.5的。
x + a%3*(int)(x=y)%2/4 由 x 和 a%3*(int)(x=y)%2/4 组成
由于运算符运算级别的关系,先算 a%3*(int)(x=y)%2/4, 对于这个表达式,
由于()的级别最高,下面我按级别分解求值
(x=y) --> x=4.7
(int)(x=y)-->4
a%3*(int)(x=y)%2/4 --> a%3*4%2/4 -->7%3*4%2/4
对于运算符号 * / % ,其运算顺序是 left to right
7%3*4%2/4 --> 1*4%2/4 --> 4%2/4 --> 0/4 --> 0
故 x + a%3*(int)(x=y)%2/4 --> x + 0 --> x --> 2.5
不知以上解释是否清楚,请参考。
哈哈,我上课也没讲这么详细。
% 【求余运算符】 两边的参数必须是整数 求余返回值的符号与第一个参数相同 0求余任何数都返回0
使用方法 num1%num2 比如7%3 余1 就返回1
-7%3 返回-1