c - 不理解语句的行
问题描述
这是代码
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;
它是如何执行的。有人请解释..谢谢!
解决方案
最初,您有 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(真)
推荐阅读
- strapi - 如何将所有strapi UI消息错误重定向到控制台?
- javascript - 如何在 JavaScript 中检测输入值何时实时变化?
- r - 关于在 R 中估计 MARSS 包中未观察到的状态的问题
- python - 为什么 prefetch_related 在 Django 中不起作用?
- react-native - 如何在 react native 0.61.5 版本中添加自定义字体
- javascript - 我应该如何处理 Ruby 中测试可能导致错误的条件?
- c# - 创建具有类似单例模式的可重用性的 CSOM ClientContext
- c# - 在不使用 htmlagilitypack 的情况下从 html 中获取价值
- java - 如何使用 JDBC 使用准备好的语句在同一个表上加入别名?
- sql - 如何在 SQL Server 中进行网络类型分布?