《C++程序的创新设计》.ppt

(6) 将signed(有符号)型数据赋给长度相同的unsigned(无符号)型变量,将存储单元内容原样照搬(连原有的符号位也作为数值一起传送)。 例2.5 将有符号数据传送给无符号变量。 #include iostream using namespace std; int main( ) { unsigned short a; short int b=-1; a=b; cout″a=″aendl; return 0; } 运行结果为 65535 赋给b的值是-1,怎么会得到65535呢?请看图2.9所示的赋值情况。 图2.9 -1的补码形式为1111111111111111(即全部16个二进制位均为1),将它传送给a,而a是无符号型变量,16个位全1是十进制的65535。如果b为正值,且在0~32767之间,则赋值后数值不变。 不同类型的整型数据间的赋值归根结底就是一条:按存储单元中的存储形式直接传送。 C和C++使用灵活,在不同类型数据之间赋值时,常常会出现意想不到的结果,而编译系统并不提示出错,全靠程序员的经验来找出问题。这就要求编程人员对出现问题的原因有所了解,以便迅速排除故障。 在赋值符“=”之前加上其他运算符,可以构成复合的运算符。如果在“=”前加一个“+”运算符就成了复合运算符“+=”。例如,可以有 a+=3 等价于 a

文档评论(0)

1亿VIP精品文档

相关文档