【发布时间】:2020-09-29 12:08:21
【问题描述】:
有人能解释一下下面代码的输出吗-
int a =-3;
printf("%d",!a);
输出为0。
我不明白为什么我的输出为0。
【问题讨论】:
-
你期待什么?
-
如果你不明白,你必须研究
!运算符的作用,就这么简单。还要研究其他完全基本的东西,比如if语句的工作原理。本网站不是替代学习的交互式初学者教程。
标签: c
有人能解释一下下面代码的输出吗-
int a =-3;
printf("%d",!a);
输出为0。
我不明白为什么我的输出为0。
【问题讨论】:
! 运算符的作用,就这么简单。还要研究其他完全基本的东西,比如if 语句的工作原理。本网站不是替代学习的交互式初学者教程。
标签: c
引用C11,第 6.5.3.3 章
逻辑否定运算符
!如果其操作数的值比较不等于0,则结果为0,如果其操作数的值比较等于0,则为1。结果类型为int。表达式!E等价于(0==E)。
在你的情况下,它可以被视为
printf("%d", (a == 0)); // where a is -3
计算结果为虚假结果,从而打印0 作为结果。
【讨论】: