C运算符 - 给出两个不同的结果

时间:2014-11-13 10:51:59

标签: c operators

#import <stdio.h>
int main()
{
    int a,d,b,c;
    a = 10;
    c = 10;
    d = --c + --c+1; 
    b = --a +1+ --a ;
    printf("b= %d, d = %d" , b,d);
    return 0;
}

b = 18,d = 17

the code and it's run

为什么d&amp; b不相等?你能解释为什么d = 17?

1 个答案:

答案 0 :(得分:0)

哦,是的,因为当ac的值减少时,它是未定义的。

d = --c + --c+1; 

如果c递减两次,然后计算出d,那么它会给出

d = 8 + 8 + 1 = 17

但是如果我们从左到右递减c,那么它会给出

d = 9 + 8 + 1 = 18