c - 关于逻辑 AND 运算符
问题描述
int a=8, b=10,c=2,d;
d= ++a && ++b || ++b;
在上面的代码中,我怎么知道(++a)
是(++b)
真还是假。我知道 true 是 1 而 false 是 0。但我不明白如何确定这些表达式是 true 还是 false 。请帮忙。
解决方案
0
为假,任何非零值都为真。所以你只需要确定++a
和是否++b
为零。
由于a
is 最初是8
,++a
is 9
,它是非零的,所以它是真的。
由于b
is 最初是10
,++b
is 11
,它是非零的,所以它是真的。
9 && 11
为真,因为两个操作数都为真。
||
仅当第一个操作数为假时才计算第二个操作数。所以第二个++b
ie 从未执行过。的true || anything
值为true
。
因此,d
将设置为 true,即1
.
推荐阅读
- c# - 是否可以在 c# Nunit 框架中使用 TestCaseSource 和 ValueSource 属性?
- google-cloud-dataflow - 启动 Dataflow SQL 作业时无法启动 VM 错误
- typescript - 在打字稿中创建 UTC 日期
- node.js - 在 javascript/nodejs 应用程序中使用 aws congito 的最佳方法是什么?
- reactjs - 如何根据附加音频文件的结尾确定音频文件的激活时间?
- java - Keycloak - 无法启动嵌入式服务器:WFLYEMB0022:无法在嵌入式进程上调用“start”:参数“abstractPath”不能为空
- powershell - Powershell ADUser 命令未与 AD 同步
- android - 在 Android Studio/Gradle 插件中支持 protobuf "import public"
- eclipse-plugin - IBM Liberty 开发人员工具未出现在 Eclipse 中
- c# - 如何解决带有移动对象的四叉树的内存问题?