printf("%d", 7 - 9 % 4 * 2);
我得到3作为我的打印答案,但答案是5.有谁能告诉我为什么我错了?
答案 0 :(得分:4)
乘法,除法和模数具有相同的优先级,并且它们都具有比加法和减法更高的优先级。如果两个运算符具有相同的优先级,则它们(在大多数情况下)从左到右进行评估。
所以表达式实际上是这样的:
7 - ((9 % 4) * 2)
这给了你:
7 - ((9 % 4) * 2) = 7 - (1 * 2) = 7 - 2 = 5
你可能做了除法而不是模数:
7 - ((9 / 4) * 2) = 7 - (2 * 2) = 7 - 4 = 3