关于C的问题!操作员

发布于 2024-10-31 07:52:22 字数 325 浏览 3 评论 0原文

我对此的理解如下。在 C 中,如果给定非零值,! 运算符将返回 0;如果给定 0,则返回非零值。

假设您有这样一个 C 代码小片段:

int y = 0;
int z = !y;

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

My understanding of this is as follows. In C, the ! operator returns 0 if it is given a nonzero value and returns a nonzero value if it is given 0.

Say you have this little snippet of C code:

int y = 0;
int z = !y;

What value will go into z? Does it simply take !0 to be 1? Is it system dependent? Does the C standard dictate what is supposed to happen? I ran into these questions while doing some homework earlier tonight dealing with bitwise 2's-complement integer manipulation. I got a certain problem to work, but I'm sort of scratching my head as to why it works. Thanks a lot for any info!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

椵侞 2024-11-07 07:52:22

C“生成”的真值总是 0 或 1。

if 等中非零表达式一般被认为是“true”,这是真的(呵呵),但是当语言本身需要时为了生成真值,它使用 0 表示 false,使用 1 表示 true。

由于 ! 运算符是逻辑运算符,因此它始终会产生 0 或 1。

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

更新:请参阅此常见问题解答条目以获取更多讨论,这就是我的想法“产生于”措辞。令人惊讶的是,它甚至有相同的双关语(在写我的答案之前我没有查过这个条目)。不确定这是否表明我有很好的幽默感。

Truth values "generated by" C are always 0 or 1.

It is true (heh) that a non-zero expression is generally considered "true" in if and so on, but when the language itself needs to generate a truth value it uses 0 for false and 1 for true.

Since the ! operator is a logical operator, it will always result in 0 or 1.

So in your case, z will be set to 1.

Update: See this FAQ entry for more discussion, that's what I had in mind with the "generated by" wording. Amazingly, it even has the same pun (I did not look this entry up before writing my answer). Not sure if this is an indication of me having a good sense of humor, or not.

那请放手 2024-11-07 07:52:22

使用 ! 运算符的一元表达式的结果是值为 01int

The result of an unary-expression with the ! operator is an int with value 0 or 1.

风筝在阴天搁浅。 2024-11-07 07:52:22

逻辑非的结果
操作员 !如果其值是 0
操作数比较不等于 0、1 如果
其操作数的值进行比较
等于 0。结果的类型为 int。
表达式 !E 等价于
(0==E)。

来自 C 标准 (n1124) 第 6.5.3.3 节。

The result of the logical negation
operator ! is 0 if the value of its
operand compares unequal to 0, 1 if
the value of its operand compares
equal to 0. The result has type int.
The expression !E is equivalent to
(0==E).

From The C Standard (n1124) section 6.5.3.3.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文