-1

代码是:

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

4

1 回答 1

3

y = 10 + 65526 = 65536 = 0(模 16 位)。

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

于 2013-08-10T08:09:03.630 回答