char a=254;
unsigned short b=a;
unsigned int c=b;
cout<<a<<" "<<b<<" "<<c<<endl;
问:
在32位机上,下面程序的输出结果。
因为a默认为有符号的,所以当对a赋值254时,在内存中表示为0xfe。又因为是有符号的,所以输出为-2.
而当把a赋值给b时,会将a中的值取出来,因为a是有符号的,所以会转化为-2,然后将-2赋给b。而b是无符号的数,且是short类型,所以对于b,其内存表示为0xfffe。所以输出b为65534。
然后将b赋值给c,此时的b读出来是65534,将b赋值给c,则也为65534.
所以最后输出为:
同时总结赋值规律:
首先根据赋值运算符右侧的变量和变量的类型将值读出来,然后再根据左侧的变量及其类型转化为相应的值。