z=x+a%3*(int)(x+y)%2/4;
1. x+y
2. (int)(x+y)
3. a%3
4. a%3*(int)(x+y)
5. a%3*(int)(x+y)%2
6. a%3*(int)(x+y)%2/4
7. x + a%3*(int)(x+y)%2/4
如果是你自己写程序,强烈建议不要写这种“令人困惑的C”,如果是考试,就另当别论了。
从左到右,依次计算:
给你加个括号吧,你就看清楚了:
z= x+ (a%3)* ((int)(x+y)) %2 /4
就是这样,就注意下强制转换的优先级高就可以了~
顺序为:a%3 x+y (int) a%3的结果与x+y计算 然后%2 在 /4 最后+x