【发布时间】:2011-06-25 06:56:16
【问题描述】:
我对下面的程序有疑问。
int main()
{
int i = -3,j = 2, k = 0,m;
m = ++i || ++j && ++k;
printf("%d %d %d %d\n", i, j, k, m);
return 0;
}
我得到的输出是-2 2 0 1。
在 OR 运算中,如果第一个值为真,那么它不会评估第二个值,因此 i = -2 和 j =2。
然后是 AND 操作。它将检查两个值是否为真。所以如果k = 1 然后m = 1。
所以输出应该是-2 2 1 1。我运行并检查并得到输出为-2 2 0 1,但我不明白如何。
【问题讨论】:
-
@Mikola&Michael:谢谢你让我理解。
标签: c logical-operators