预测以下程序的输出。假设数字以2的补码形式存储。
#include
int main()
{
unsigned int x = -1;
int y = ~0;
if (x == y)
printf("same");
else
printf("not same");
return 0;
}
(一)一样
(B)不一样答案: (A)
说明: -1和〜0本质上具有相同的位模式,因此x和y必须相同。在比较中,y被提升为无符号并与x进行比较(有关提升规则,请参见此内容)。结果是“相同”。但是,当解释为有符号和无符号时,它们的数值将有所不同。 x是MAXUNIT,y是-1。由于也有y的%u,因此输出将是MAXUNIT和MAXUNIT。这个问题的测验
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。