以下的程序,结果是怎么得到的,再验证结果,说明原因。

#includevoid main(){ short a=65535; int b,c; b=a; c=(int) 65535; printf("\na=%d,b=%d,c=%d",a,b,c);}

a=-1,b=-1,c=65535
a是short型,只有2字节,所以65535溢出了,变成-1了
当a赋值给b的时候,b是个int,直接得到了a的值-1,而不会得到65535
c在赋值的时候进行了强制转换,但是其实多此一举,不强制转换也可以赋值成功