c - 我如何计算输出

标签 c operators logical-operators

#include<stdio.h>
  void main()
  {
     int x=3,y=2,z=0,m;
     m=++x || ++y && ++z;
 printf("\n %d %d %d %d\n",x,y,z,m);  //  4  2  0  1
   } 

以下代码的输出在程序中作为注释提到,我正在尝试评估这个答案是如何得出的,但我无法理解。

我只是想知道程序如何计算相对值。

最佳答案

感谢 pmg,我已经更正了我原来的答案(我有一个错误)

由于 OR 运算符 (||) 的左侧不为零,因此它不会计算该行上的任何其他内容。这称为“短路运算符”。在你给出的这个例子中,程序员基本上是在欺骗编译器。如果运算符右侧的参数不影响结果,则不会执行该代码。然而在这种情况下,那里发生了增量,并且它们也不会被评估。 这会将“1”分配给 m。 你的输出应该是 3, 2, 0, 1。

关于c - 我如何计算输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52761965/

相关文章:

r - r 函数是否有不接受 "or"逻辑运算符的原因?

C程序在if语句中覆盖文件内容

c# - 使用条件运算符转换为不同类型

java - 使用 xor 运算符进行 boolean 检查是一种好习惯吗?

python - 为什么 Decimal ('0' ) > 9999.0 在 Python 中为真?

mysql - := operator mean in mysql? 是什么

c++ - 在没有任何条件语句或变量捕获的情况下使用逻辑运算符

c - 无法定位 "dereferencing pointer to incomplete type"错误的来源

c - 在 C 中 fork - 无限循环?

c - 使用 setjmp() 和 longjmp() 创建斐波那契生成器序列时出错