c - 为什么不是负数运算符给出了这个输出
问题描述
有人可以解释以下代码的输出吗-
int a =-3;
printf("%d",!a);
输出是0
。
我不明白为什么我得到输出为0
.
解决方案
引用C11
,第 6.5.3.3 章
如果其操作数的值比较不等于 0,则逻辑否定运算符的结果
!
为 0,如果其操作数的值比较等于 0,则为 1。结果类型为int
。表达式!E
等价于(0==E)
。
在你的情况下,它可以被视为
printf("%d", (a == 0)); // where a is -3
它评估为一个虚假的结果,从而打印0
为结果。
推荐阅读
- actions-on-google - 为什么不触发`actions.intent.TRANSACTION_DECISION`?
- java - 带有tomcat的intellij上的java ee maven项目无法解析为一种类型
- scala - 在 sbt build 上找不到类
- python - 如何在 django 模板中显示列表?
- css - CSS 边距问题 - 无法在
和 - ssl - 信任 Elasticsearch SSL 配置的自签名证书
- node.js - 如何在 Microsoft Bot 框架中开发自定义小部件?
- c# - 快速显示从服务器下载的图像
- c# - 用于构建所有子集的函数
- angular - 角料过滤表