【发布时间】:2021-01-25 09:24:29
【问题描述】:
#include<stdio.h>
void main(){
int i = 3;
printf("%d", ~i);
}
输出是 2。3 是 0000 0011。波浪号将所有位更改为相反的位。那么答案是2吗?
正如我从其他帖子中读到的那样。 2 的补码是 (~i)+1,这使得 ~ 成为 1 的补码运算符。即使是这样,2如何可能的输出?
【问题讨论】:
-
void main()是错误的。The output is 2我无法得到这个输出。你用的是什么编译器?您正在使用哪些编译器选项?您使用的是什么操作系统? -
这里的输出是
-4。 -
你从哪里得到这样的输出?
-
什么输出?
echo $?的结果,也许? -
@AnaghBasak,它是一样的,你可以制作 8 位表示 1111 1100 甚至是 64 位表示 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1是一样的-4。
标签: c twos-complement tilde