c - 关于C的问题!运算符(operator)

标签 c logical-operators

我对此的理解如下。在 C 语言中,! 运算符在被赋予非零值时返回 0,在被赋予 0 时返回非零值。

假设您有一小段 C 代码:

int y = 0;
int z = !y;

z 的值是多少?它只是将 !0 设为 1 吗?它是系统依赖的吗? C标准是否规定了应该发生的事情?我在今晚早些时候做一些处理按位 2 的补码整数操作的作业时遇到了这些问题。我有一个特定的问题需要解决,但我有点摸不着头脑,为什么它有效。非常感谢您提供任何信息!

最佳答案

由 C“生成”的真值始终为 0 或 1。

非零表达式在 if 等中通常被认为是“真”是真的(呵呵),但是当语言本身需要生成真值时它使用 0 来表示假1 表示真。

由于 ! 运算符是一个逻辑运算符,它的结果总是 0 或 1。

因此在您的情况下,z 将设置为 1。

更新:参见this FAQ entry为了进行更多讨论,这就是我对“生成者”措辞的看法。令人惊讶的是,它甚至有相同的双关语(在写我的答案之前我没有查看这个条目)。不确定这是否表明我有很好的幽默感。

关于c - 关于C的问题!运算符(operator),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5594512/

相关文章:

c - 不确定为什么 1 printf 语句打印两次

python - 在python中查找指定范围内的图像像素的坐标

c - 如何用C语言编写具有多个条件的while循环

optimization - Netlogo 本地优化

c - 数组c编程绝对值?

c - 将 char 写入 char 数组时出现段错误

c - 使用 fork() 时资源暂时不可用

c - 结构与字符串文字?只读还是读写?

javascript - 检查变量相等性的语法

java - 逻辑?调试了很多次都找不到错误