[英]Question about C ! operator
我对此的理解如下。 在C中, !
如果给定非零值,则运算符返回0,如果给定0,则返回非零值。
假设您有这段C代码:
int y = 0;
int z = !y;
什么价值将进入z
? 是否只需要!0
为1? 它是系统依赖的吗? C标准是否规定了应该发生的事情? 我在今晚早些时候做一些功课时遇到了这些问题处理按位2的补码整数操作。 我有一个问题需要解决,但是我有点不知道为什么它会起作用。 非常感谢任何信息!
“由C生成的真值”始终为0或1。
这是事实(港灯),在一个非零的表达通常被认为是“真” if
等,但在语言本身需要产生一个真值,它使用0假,1为真。
自从!
operator是一个逻辑运算符,它总是会产生0或1。
所以在你的情况下, z
将被设置为1。
更新 :有关更多讨论,请参阅此常见问题解答条目 ,这就是我对“生成的”措辞所记录的内容。 令人惊讶的是,它甚至有相同的双关语(在写我的答案之前我没有看到这个入口)。 不确定这是否表明我具有良好的幽默感。
与一元表达的结果!
operator是一个值为0
或1
的int
。
逻辑否定运算符的结果! 如果其操作数的值比较不等于0则为0;如果其操作数的值比较等于0则为1.结果的类型为int。 表达式!E等价于(0 == E)。
来自C标准(n1124)第6.5.3.3节。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.