我有这段代码,你能解释一下输出吗
unsigned int x=3;
~x;
printf("%d",x);
输出为10 我无法做到这一点。
我已经在turbo c上编译了代码
最佳答案
您发布的代码无法编译。如果将 ~x
更改为 x = ~x;
,它将编译,但不会给出输出“10”。
~
运算符创建给定数字的按位反转。在二进制中,数字 3 作为一个八位整数由 00000011
位表示。 ~
运算符会将这些位中的每一位替换为相反的位,得到 11111100
,即 252 无符号或 -4 有符号。
您将 x
声明为 unsigned int
,这意味着在大多数平台上是 32 位无符号值。因此,您的原始值为 00000000 00000000 00000000 00000011
,其倒数为 11111111 11111111 11111111 11111100
或 4294967292。
关于c - 无法弄清楚 ~ 运算符在 c 中如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2242237/