【发布时间】:2015-02-02 12:51:19
【问题描述】:
我看到下面的代码打印输出“Same”,但我在理解这个程序时遇到了麻烦。请帮助我理解程序。
int main()
{
unsigned int x = -1;
int y = ~0;
if(x == y)
printf("same");
else
printf("not same");
return 0;
}
输出“Same”是怎么来的?请帮助我了解这里发生的情况。
【问题讨论】:
-
~0的结果是什么?请解释一下。 -
除了 -1 和 ~0 的位等价性之外,最好注意编译器会进行“通常的算术转换”,将 ~0 转换为
unsigned int类型(例如解释为 @ 987654321@)。如果将数字转换为例如,比较的结果会有所不同。int64_t,但这不是 c 中发生的事情。一个相关问题:here
标签: c implicit-conversion