c - 无法弄清楚 ~ 运算符在 c 中如何工作

标签 c expression casting

我有这段代码,你能解释一下输出吗

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/

相关文章:

C - 如何完全释放结构数组单元格

c# - 如何通过 lambda 表达式中的字符串属性名称进行选择查询?

android - Android中将两个float和integer类型的值相加的方法

java - 如何克服这个强制转换异常?

c - 一个简单的for循环的输出?

c - K&R Exercise Squeeze 函数

c# - 使用 Linq.Expressions 的算术计算在 32 位和 64 位上产生不同的结果

c# - 如何创建不同类型的 Expression<Func<T, object>> 的集中提供者?

c++ - 基类 -> 派生类和 C++ 中的反之转换

c - scanf 函数打印出无关紧要的内容