gpt4 book ai didi

c - 为什么 (unsigned int) 在 C 的输出中产生负数

转载 作者:行者123 更新时间:2023-11-30 15:02:28 31 4
gpt4 key购买 nike

我发现下面代码中的输出总是带有负号,尽管我指出变量 x 的位用于启动语句中的无符号整数。

为什么~x产生一个带负号的数字,而没有为要首先反射(reflect)的数字的符号分配位?

#include <stdio.h>
void main() {
unsigned int x = 11;
printf("not x=%d", ~x);
}

最佳答案

此行为取决于平台,但基本答案是 printf 不知道您传递的内容已声明为无符号。这只是一个值。如果您使用 %d 格式,该值将被解释为有符号整数。如果您使用%u,它将被解释为无符号。在使用二进制补码表示的处理器上,最高有效位设置的值是负数。由于 ~11 设置了该位,因此它显示为负数。

关于c - 为什么 (unsigned int) 在 C 的输出中产生负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41044043/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com