前缀增量运算符对全局变量和局部变量的处理方式不同

时间:2019-06-23 21:12:21

标签: c++ c

当与算术运算符(如+,-等)链接在一起时,前缀运算符与全局变量的行为似乎有所不同

++glo + ++glo设置为glo的表达式2与本地loc相比,得出的值不同。

int glo = 2; // global

int main() {
    int x;

    int loc = 2; // local

    x = ++loc + ++loc;
    printf("%d", x); // prints 8 as expected

    x = ++glo + ++glo;
    printf("%d", x); // prints 7
}

1 个答案:

答案 0 :(得分:2)

这是UB。您正在同一表达式中执行两个增量。因此,您得到不同的结果。