逻辑运算符和增量运算符

汉特·维卡斯·帕特奈克

谁能解释一下这段代码?如何仅将值分配给变量 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; 
}
苏拉夫·戈什

||或逻辑 OR 运算符具有短路属性它仅评估 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 运算符的结果是0or 1,一个整数值。结果存储在m, 在您的情况下。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章