第二章 数据类型–运算符与表达式.ppt
文本预览下载声明
强制类型转换运算符 不同 数据 类型 的转 换 自动转换 强制转换------通过强制类型转换运算符转换 运算转换------不同类型数据混合运算时 赋值转换------把一个值赋给与其类型不同的变量时 输出转换------输出时转换成指定的输出格式 函数调用转换------实参与形参类型不一致时转换 强制类型转换运算符 自动转换------运算转换: double float long unsigned int char,short 低 高 必定的转换 运算对象类型不同时转换 例: char ch; int i; float f; double d; ch/i + f*d - (f+i) int int double double double double double double int int double double double double double double 10+‘a’ +i*f - d/m 例: int i; float f; double d; long m; 强制类型转换运算符 (1) 短长度的数据类型 → 长长度的数据类型 方法:直接将无符号短长度的数据类型的数据作为长长度的数据类型数据的低位部分,长长度的数据类型数据的高位部分补零。 无符号短长度的数据类型 → 无符号或有符号长长度的数据类型 例如: unsigned char ch = 0xfc; unsigned int a = 0xff00; //假设int数据为16位 int b; unsigned long u; b = ch; //b的值将是0x00fc u = a; //u的值将是0x0000ff00 自动转换------赋值转换: (1) 短长度的数据类型 → 长长度的数据类型 方法:直接将有符号短长度的数据类型的数据作为长长度的数据类型数据的低位部分,然后将低位部分的最高位(即有符号短长度数据的符号位)向长长度的数据类型数据的高位部分扩展。 有符号短长度的数据类型 → 无符号或有符号长长度的数据类型 强制类型转换运算符 例如: char ch = 2; int a = -2; int b; unsigned long u; b = ch; //b的值将是2 u = a; //u的值将是0xfffffffe 自动转换------赋值转换: (2) 长长度的数据类型 → 短长度的数据类型 方法:直接截取长长度的数据类型数据的低位部分(长度为短长度的数据类型的长度)作为短长度数据类型的数据。 例如: int a = -32768; //假设int数据为16位 unsigned long b = 0xffffaa00; char ch; int c; ch = a; //ch的值将是0 c = b; //c的值将是0xaa00 强制类型转换运算符 自动转换------赋值转换: (3) 长度相同的数据类型转换 方法:数据按照原样复制即可。 例如: int a = 0xff00; unsigned int b = a; //b的值将是0xff00 强制类型转换运算符 自动转换------赋值转换: 强制转换------强制类型转换运算符: 强制类型转换运算符 一般形式:(类型说明符) (表达式) 功能:把表达式的运算结果强制转换成类型说明符所表示的类型。其 中,(类型说明符)是强制类型转换符,它的优先级比较高。 例: float x = 3.5, y = 2.1, z; int a; a = (int)(x+y); //结果为5 z = (int)x+y; //结果为5.100000 z = (double)(3/2); //结果为1.000000 a = (int)3.6; //结果为3 精度损失问题 较高类型向较低类型转换
显示全部