相关疑难解决方法(0)

C中的OR和AND运算

我对下面的程序有疑问.

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;
}
Run Code Online (Sandbox Code Playgroud)

我把输出作为-2 2 0 1.

在或运算,如果第一个值是真实的,那么它不会评价:第二个这样i = -2j =2.然后是AND操作.它会检查两个值是否为真.如果那样的k = 1m = 1.所以输出应该是-2 2 1 1.我跑,检查并得到输出,-2 2 0 1但我无法理解如何.

c logical-operators

6
推荐指数
2
解决办法
2052
查看次数

当"++ i && ++ j"求值为真时,为什么"k = ++ i && ++ j || ++ k"中的"k"不递增?

复合逻辑AND/OR 表达式中的各个表达式是否应该在将逻辑运算符应用于其结果之前首先进行求值?为什么在以下程序++k的条件中不受影响m = ++i && ++j || ++k:

 #include<stdio.h>

 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;
}
Run Code Online (Sandbox Code Playgroud)

输出: -2,3,0,1

但我期待输出 -2,3,1,1

c expression logical-operators

-1
推荐指数
1
解决办法
9345
查看次数

标签 统计

c ×2

logical-operators ×2

expression ×1