【问题标题】:Why Not operator for negative number gives this output [duplicate]为什么不是负数运算符给出此输出[重复]
【发布时间】:2020-09-29 12:08:21
【问题描述】:

有人能解释一下下面代码的输出吗-

int a =-3;
printf("%d",!a);

输出为0
我不明白为什么我的输出为0

【问题讨论】:

  • 你期待什么?
  • 如果你不明白,你必须研究! 运算符的作用,就这么简单。还要研究其他完全基本的东西,比如if 语句的工作原理。本网站不是替代学习的交互式初学者教程。

标签: c


【解决方案1】:

引用C11,第 6.5.3.3 章

逻辑否定运算符! 如果其操作数的值比较不等于0,则结果为0,如果其操作数的值比较等于0,则为1。结果类型为int。表达式!E 等价于(0==E)

在你的情况下,它可以被视为

 printf("%d", (a == 0));   // where a is -3

计算结果为虚假结果,从而打印0 作为结果。

【讨论】:

    猜你喜欢
    • 2017-07-28
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    相关资源
    最近更新 更多