文档详情

3数据类型、运算符及表达式.ppt

发布:2018-06-28约1.37万字共53页下载文档
文本预览下载声明
* 左边两层,右边有四层 * 低于算术运算符 * 作用:给变量赋值. * m,n,d,p,:两层 1、将实型数据赋给整型变量时,舍弃实数的小数部分。如:x=3.75; 2、若i是整型变量,将一个长整型数据赋值给它时,很可能完全错误。 3、将一个无符号整数赋给长度相同的带符号整型变量时,如果该无符号数超出整型变量的范围也会出错。 4、将一个带符号整数赋给无符号整型变量时,如果该数为负也会出现错误。 5、将一个双精度浮点数赋给一个单精度实型变量时,有可能带来误差,甚至完全错误 * m,n,k:多层 * 赋值表达式求值过程 1.求表达式e的值E 2.求V OP E的值E1 3.求E1对应变量类型的值E2 4.将E2赋给变量V,且E2为赋值表达式的值 * 尾数部分 数符 + 纯小数(23) 阶数部分 数符 + 整数(7) float型 以浮点数形式存放 在内存中占4个字节 31 7 ?????? 30 8 ?????? 6 0 如: float x=-12.625; (12.625)10 内存中的 -12. 526 说明: float型数据的 有效位是6~7位. 如: float y=12345.6789, z=0.000123456789; =(1100.101)2 =(0.1100101×2100 )2 4 10 1 1 0 1 0 0 1 1 0 ?????? 1 0 0 0 ?????? 0 * double型 尾数部分 数符 + 纯小数(51) 阶数部分 数符 + 整数(11) 以浮点数形式存放 在内存中占8个字节 63 11 ?????? 62 12 ?????? 10 0 说明: float型数据的有效位是15~16位. * 3.3.1 自动类型转换 3.3.2 强制类型转换 3.3 数据类型的转换 3.3.1 自动类型转换   C语言允许不同的简单数据类型之间的各种运算。如 1.5+2*a-1 在运算中,系统自动将不同类型的数据先转换成同一类型,然后再运算。 转换规则如图: double float long unsigned int char,short 低 高 说明: 类型的高低: 以值域来确定 表示必然的转换 运算对象为不同 类型时转换的方向 只能低类型 高类型 1 例 int i; double d; long a; float x; 2+’a’ int int 7.5 + x double double i + a + d long long double double 3.3.2 强制类型转换 由用户将一个表达式的值 所需数据值类型值。 一般形式: 例: (类型名)(表达式) 若有声明: int m=11; float x=7.5, y; (int)3.6 → (int)(2.1+x) → 4 ? 3√ 9.6? 9√ (float)m → 11.0√ 考虑: m的值现在为多少? 11.0? 11√ (int) 2.1+x → 9.5√ 说明: 强制转换得到所需类型值,原变量类型不变 。 1 * 3.4.1 算术运算符 3.4.2 算术表达式 §3.4 算术运算符与算术表达式 * 3.4.1 算术运算符 二元运算符 加法 减法 乘法 除法 + - * / 模 % 一元运算符 正 负 + - 自增1 自减1 ++ - - 说明: 要求操作数为简单类型 %, ++, -- : 要求操作数为整型 ++, -- : 要求操作数为整型变量 整型 字符型 枚举型 指针型 例: 若有声明: int m=11; float x=7.5; m+5→16 x*2→15.0 11/2→5 x/2→3.75 m%2→1 x%2→× (int)x%2→1 ’a’%2→1 * ++m 在使用m之前自增1 m++ 在使用m之后自增1 -m → -1*m → -1 (若有声明: int m=1, n=10; float x=7.5; ) ++m → m+1?m → 2 m++ , 且 m中的值为2 → m+1?m → 2 , 且 m中的值为2 -(x+2) → -1*9.5 → -9.5 ++m+4
显示全部
相似文档