c - 以下 C 代码的输出

标签 c logical-operators

int i=-1,j=-1,k=0,l=2,m;
m=l++||i++ && j++ && k++;
printf("%d %d %d %d %d",i,j,k,l,m);

代码的输出是:-1 -1 0 3 -1
我的问题是为什么i++ j++k++即使 && 也不会被评估比 || 具有更高的优先级?

最佳答案

查看 Short-circuit evaluation.

本质上发生的事情是,当 l++=3 不为 0 时,它的计算结果为 True(只有 0 才是 False)。因此,|| 之后表达式的第二部分未进行评估。

关于c - 以下 C 代码的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24656002/

相关文章:

c - 将两个字符打包成一个整数

java - If 语句和逻辑运算符

C++ 逻辑与运算符

python - 在大小为 n*n python 的 ndarray 中接收到大于 x 的元素的所有索引

c - 为什么我在使用 read() 时一次只能得到一个字符?

c - 输入整数(无限制)并找到最小的(C语言)

c - C 中字符缓冲区的最大大小?

c - 如何在 c 中为我的链接列表覆盖 [] 运算符

python - 在Python中查找两个数字之间的AND运算的最大值

java - Java中的运算符优先级和逻辑运算符