C语言 逻辑运算符和增量运算符



谁能解释一下这段代码?如何将值仅分配给变量 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%dn", 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运算符的结果要么是0,要么是1,一个整数值。结果存储在m中,在您的情况下。

相关内容

  • 没有找到相关文章

最新更新