带逻辑运算符的混合增量运算符

如果我有这个代码,我有一个关于使用逻辑运算符的前后增量的问题

void main() {int i = - 3 , j = 2 , k = 0 , m ; m=++i||++j&&++k; printf("%d %d %d %d",i,j,k,m);} 

知道增量和减量运算符的优先级高于&&和|| 所以他们先被执行然后&&高于
表示-2 || 3 && 1,它给出printf的值-2 3 1 1

但是在尝试使用VS2010时我得到的输出是-2 2 0 1

有没有人对此有任何解释? 问候,,

这是你从短路中获得的。 ++i是-2,其余的不需要评估(并且不符合标准)。 ||的左侧 是的,因为-2不是0,所以整个表达式都是真的。