逻辑运算符和增量运算符

时间:2018-09-03 15:40:53

标签: c logical-operators

任何人都可以解释此代码吗?如何仅将值分配给变量m,但所有变量的输出都会改变。还有逻辑运算符和增量运算符的作用。

#include <stdio.h>

#include <stdlib.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; 
}

1 个答案:

答案 0 :(得分:0)

||或逻辑OR运算符具有short-circuit property。它只评估了RHS是LHS是FALSY。

在您的情况下,对++x的求值将生成-2的值,该值不是FALSY(0)。因此,永远不会评估RHS。

要分解它:

m = ++i || ++j && ++k; 

 >> m = (++i) || (++j && ++k);
     >> m = (-2) || (++j && ++k);
        >> m = 1   // -2 != 0 

因此,仅更改了mi的值,其余变量将保留其值(因为它们没有被求值)。

也就是说,逻辑OR运算符的结果是01(一个整数值)。根据您的情况,结果存储在m中。