代码是:
#include<stdio.h>
int main()
{
signed x,a;
unsigned y,b;
a=(signed)10u;
b=(unsigned)-10;
y = (signed)10u + (unsigned)-10;
x = y;
printf("a=%d, b=%u",a,b);
if(x==y)
printf("\nx=%d, y=%d",x,y);
else if(x!=y)
printf("\nx=%u, y=%u",x,y);
return 0;
}
输出是:
a=10, b=65526
x=0, y=0
请解释此输出。我正在研究Turbo C.
答案 0 :(得分:3)
y = 10 + 65526 = 65536 = 0(mod 16-bit)。
你必须记住,在一天结束时,无论是有符号还是无符号,只是将位分配给内存位置。如何解释它们可能是一个问题或背景。因此,将-10写入无符号变量与将65526写入其中相同。