首页 > 解决方案 > 不理解语句的行

问题描述

这是代码

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;
}

并输出:-2, 2, 0, 1

但我不明白 m = ++i||++j&&++k;它是如何执行的。有人请解释..谢谢!

标签: c

解决方案


最初,您有 4 个变量:

  • 我 = -3
  • j = 2
  • k = 0
  • m 未初始化

m = ++i||++j&&++k;从左到右执行。所以第一个是++i- 我建议阅读i++ 和 ++i 之间的差异- 在这种情况下i增加 1 并变为 i=-2

-2 是一个true表达式,因此 m 变为 1 并且不计算表达式的其余部分。因为true or anything else无论如何总是正确的。所以最终结果:

  • i = -2(增加)
  • j = 2(不变)
  • k = 0(不变)
  • m 为 1(真)

推荐阅读