#include <stdio.h>
int main(void) {
int i;
i = 10;
i*= 10+2;
printf("%d",i);
return 0;
}
为什么输出以下代码120而不是102?
答案 0 :(得分:3)
因为优先顺序会使&#39; +&#39;高于* =,因此10 + 2将出现在i * =。
在http://en.cppreference.com/w/c/language/operator_precedence
订购的C参考答案 1 :(得分:0)
在这条线上 i * = 10 + 2; 在这种情况下,12乘以i It Means I = 10 * 12; 所以它会给120回答
解决这个问题 试试这个。
i*= 10;
i+=2;
答案 2 :(得分:0)
你的代码就像。
i= i*(10+2)
所以答案就像120.
如果你想像102那样回答。
i=i*10+2
答案 3 :(得分:-1)
这个
i*= 10 + 2;
是
的语法糖i= i * (10 + 2);
其余的是从左到右的优先级,在mult./division之后添加和替换