background image

doub1e 型数据参加运算,然后直接赋值。doub1e 型数据转换为 float 型时,通过截尾数来

  

实现,截断前要进行四舍五入操作。
(3) char 型与 int

  

 

● int 型数值赋给 char 型变量时,只保留其最低 8

  

位,高位部分舍弃。

 

● chr 型数值赋给 int

 

型变量时, 一些编译程序不管其值大小都作正数处理,而另一些编

译程序在转换时,若 char 型数据值大于 127,就作为负数处理。对于使用者来讲,如果原
来 char 型数据取正值,转换后仍为正值;如果原来 char 型值可正可负,则转换后也仍然保

 

  

持原值, 只是数据的内部表示形式有所不同。
(4) int 型与 1ong

  

 

● long 型数据赋给 int 型变量时,将低 16 位值送给 int 型变量,而将高 16 位截断舍弃。
(这里假定 int 型占两个字节)

  

将 int 型数据送给 long

  

型变量时,其外部值保持不变,而内部形式有所改变。

(5) 

  

无符号整数

 

● 将 一 个 unsigned 型 数 据 赋 给 一 个 占 据 同 样 长 度 存 储 单 元 的 整 型 变 量 时 ( 如 :
unsigned→int、unsigned long→long,unsigned short→short) ,原值照赋,内部的存储方式不

 

变,但外部值却可能改变。

 

● 将一个非 unsigned 整型数据赋给长度相同的 unsigned

 

型变量时, 内部存储形式不变,

  

但外部表示时总是无符号的。
/*例:

 

赋值运算符举例 */ 

main() 
{ unsigned a,b; 
int i,j; 
a=65535; 
i=-1; 
j=a; 
b=i; 
printf("(unsigned)%u→(int)%d\n",a,j); 
printf("(int)%d→(unsigned)%u\n",i,b); 

 

运行结果为:
(unsigned)65535→(int)-1 
(int)-1→(unsigned)65535 

 

● 计算机中数据用补码表示,int 型量最高位是符号位,为 1 时表示负值,为 0 时表示正
值。如果一个无符号数的值小于 32768 则最高位为 0

 

,赋给 int 型变量后、得到正值。如果无

符号数大于等于 32768,则最高位为 1  

, 赋给整型变量后就得到一个负整数值。反之,当

一个负整数赋给 unsigned 型变量时,得到的无符号值是一个大于 32768

  

的值。

 

● C 语言这种赋值时的类型转换形式可能会使人感到不精密和不严格,因为不管表达式

  

的值怎样,系统都自动将其转为赋值运算符左部变量的类型。

 

 

● 而转变后数据可能有所不同,在不加注意时就可能带来错误。 这确实是个缺点,也遭
到许多人们批评。但不应忘记的是:c 面言最初是为了替代汇编语言而设计的,所以类型

 

变换比较随意。当然, 用强制类型转换是一个好习惯,这样,至少从程序上可以看出想