3

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

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

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

4

1 回答 1

4

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

于 2013-04-11T00:45:02.833 回答