混合增量运算符与逻辑运算符

时间:2013-04-11 00:39:31

标签: c increment logical-operators pre-increment

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

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

有人对此有任何解释吗? 此致,,

1 个答案:

答案 0 :(得分:4)

这是你从短路中获得的。 ++i为-2,其余部分不必评估(并且不符合标准)。 <{1}}的左侧为真,因为-2不为0,因此整个表达式为真。