在C中签名和未签名

时间:2013-08-10 07:57:53

标签: c casting int unsigned signed

代码是:

#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.

1 个答案:

答案 0 :(得分:3)

y = 10 + 65526 = 65536 = 0(mod 16-bit)。

你必须记住,在一天结束时,无论是有符号还是无符号,只是将位分配给内存位置。如何解释它们可能是一个问题或背景。因此,将-10写入无符号变量与将65526写入其中相同。