我有一个关于逻辑运算符的前后增量的问题 如果我有这个代码
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
但尝试VS2010时得到的输出是-2 2 0 1
有人对此有任何解释吗? 此致,,
答案 0 :(得分:4)
这是你从短路中获得的。 ++i
为-2,其余部分不必评估(并且不符合标准)。 <{1}}的左侧为真,因为-2不为0,因此整个表达式为真。