This question already has answers here:
Logical Operators in C

(8个答案)


7年前关闭。



main( ) {
    int   i = 4, j = -1, k = 0, w, x, y, z ;
    w = i || j || k ;
    x = i && j && k ;
    y = i || j && k ;
    z = i && j || k ;
    printf ( "\nw = %d x = %d y = %d z = %d", w, x, y, z ) ;
}

我只是在学习C,并且遇到了这段代码。老实说,我不知道w,x,y和z被分配了什么。显然,输出如下:
w = 1 x = 0 y = 1 z = 1

“w”如何等于1?我不明白。

最佳答案

||是逻辑OR运算符。来自C11 s6.5.14逻辑或运算符



将其应用于w的计算中,我们得到

w = i || j || k  == (i || j) || k
                 == (non-zero || non-zero) || 0
                 == 1 || 0
                 == 1
xyz的计算相似。 C11 s6.5.13.3声明&&运算符的结果应为0或1。

09-13 09:57