输出结果是9。
整型数据两个字节,字符型数据一个字节,怎么把整型数据赋给字符型变量?
解释:直接把整形数据的低8位送到char 型变量。
数值在计算机内存中是怎么存储的呢?
1.1.0 位 & 位模式 & 字节
位是存储在计算机中的最小数据单位:它是 0或 1。
为了表示数据的不同类型,应该使用位模式,它是一个序列,有时也称为位流。计算机存储器仅仅将数据以位模式存储。至于它所存储的位模式表示哪种类型,计算机并不知道。当数据输入计算机时,它们被编码,当呈现给用户时,它们被解码。
通常长度为8的位模式被称为字节。
1.1.1 数据在内存中的存放形式
数据在内存中是以二进制形式存放的。
实际上数值是以补码表示的。
(1)TurboC2.0一个整形数据变量在内存中分配2个字节的存储单元(不同的编译系统为整形数据分配的字节数是不相同的)。
(2)一个浮点型数据一般在内存中占4个字节。
(3)将一个字符型常量放到一个字符型变量中,实际上并不是把该字符本身放到内存单元中,而是将该字符的对应的ASCII码放到存储单元中。既然内存中,字符数据以ASCII码存储,它的存储形式和整数的存储形式类似。字符型数据和整形数据可以通用,一个字符型数据既可以以字符形式输出,也可以以整形数据输出。
1.2.0 关于赋值
1.2.1 字符型数据赋给整型变量
上面的题目是将整形数据赋给字符型数据。如果将字符型数据赋给整型变量,由于字符只占一个字节,而整型占2个字节,因此将字符数据(8个二进制位)放到整型变量存储单元的低8位中。有两种情况 如下:.
(1)如果所用系统将字符处理为无符号的字符类型,则将字符的8位放到整型变量低8位中,高8位补0。
(2)如果所用系统将字符处理为带符号的,若字符最高位为0,则整型变量高8位补0;若字符最高位为1,则高8位全补1。这称为符号扩展,这样做的目的是是数值保持不变。
1.2.2 int /short/long 型数据赋给一个char 型变量
只将其低8位原封不动的送到char 型变量。
这是 董哥为了加深我的理解,改编的程序。
很遗憾,没有懂额。。。