C运算符的执行顺序

时间:2017-05-19 10:03:09

标签: c operators

#include <stdio.h>

int main(void) {

    int i;
    i = 10;
    i*= 10+2;
    printf("%d",i);
    return 0;
}

为什么输出以下代码120而不是102?

4 个答案:

答案 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之后添加和替换