C运算符优先表达评估

时间:2019-05-15 07:35:40

标签: c operators operator-precedence

我有一个下面的代码可将b的值打印为20,但我无法理解该代码背后的逻辑或求值顺序。

我期望它应该打印23。

我正在使用具有gcc 6.3编译器版本的在线代码厨师IDE

 #include <stdio.h>

    int main(void) {

        int array[] = {12, 10, 23, 25};

        int *ptr = array;
        printf("a: %d \n", *ptr);

        int b = ++*ptr+*++ptr; // 13 +  10 -- 10 + 10

        printf("b: %d \n", b);
        printf("a: %d \n", *ptr);

        return 0;
    }

0 个答案:

没有答案