【发布时间】:2013-08-10 07:57:52
【问题描述】:
代码是:
#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。
【问题讨论】:
-
你尝试解释一下输出怎么样?
-
我无法理解为什么在这种情况下 y 的值为 0。
-
但是您还没有发布任何尝试或推理……将问题分解为步骤……
-
一个有用的建议——不要使用tubo C
-
Turbo C 是古老的,16 位的,应该有 0 理由使用它。 GCC 几乎在各个方面都优于 Turbo C。
标签: c casting int unsigned signed