c语言第3章数据类型及其运算解读.ppt

  1. 1、本文档共106页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c语言第3章数据类型及其运算解读

运算符的优先级与结合性 优先级 描述 运算符 结合性 1 最高优先级 [ ] ( ) .(结构体成员运算) - (指向结构体成员运算) 左→右 2 单目运算 -(负号)++ -- !(非) ~(位取反) (类型) sizeof * (指针取内容运算) (取地址运算) 右→左 3 算术乘除运算 * / % 左→右 4 算术加减运算 + - 左→右 5 移位运算 左→右 6 关系运算 = = 左→右 7 相等关系运算 == != 左→右 高 低 运算符的优先级与结合性(续) 优先级 描述 运算符 结合性 8 按位与 左→右 9 按位异或 ^ 左→右 10 按位或 | 左→右 11 逻辑与 左→右 12 逻辑或 || 左→右 13 三目条件运算 ?: 右→左 14 赋值运算 = += -= *= /= %= = = = ^= |= 右→左 15 逗号运算符 , 左→右 高 低 混合运算时数据类型的转换 当表达式中出现了多种类型数据的混合运算时,需要进行类型转换。 隐含转换(自动转换):从占用内存较少的短数据类型转化成占用内存较多的长数据类型时,可以不做显式的类型转换声明。 强制类型转换:从较长的数据类型转换成较短的数据类型时,要做强制类型转换。 数据类型 关键字 占用位数 字符型 char 8 短整型 short 16 整型 int 32 长整型 long 32 浮点型 float 32 双精度型 double 64 例如: long lVal=1000; int ival=200; lVal=ival; double d1=123.5f; 基本类型数据占有的内存宽度 混合运算时数据类型的转换 1. 隐含转换(自动类型转换)的规则: char,short,int,unsigned,long,unsigned long,float,double 低 高 混合运算时数据类型的转换 2. 强制类型转换,消除从大到小的警告 l = (long)i; 格式: (类型)表达式 作用:把表达式的值转为任意类型,从而将数据范围宽的数据转换成范围低的数据,但这可能会导致溢出或精度的下降。 例: (int)(x+y) (int)x+y (double)(3/2) (int)3.6 用途: 满足一些运算对类型的特殊要求, 例%,两侧为int (int)2.5%3 防止丢失整数除法中的小数部分,例 int x=3,y=2; float f; f=(float)x/y; 混合运算时数据类型的转换 //阅读程序,给出运行结果 #include stdio.h int main() { int m=5; printf(m/2=%d\n,m/2); printf((float)(m/2)=%f\n,(float)(m/2)); printf((float)m/2=%f\n,(float)m/2); printf(m=%d\n,m); return 0; } 两个整数运算的结果还是整数,不是浮点数 说明:强制转换得到所需类型的中间变量,原变量类型不变 m/2 = 2 (float)(m/2) = 2.000000 (float)m/2 = 2.500000 m = 5 例:阅读程序,给出运行结果 int main() { float x; int i; x=3.6; i=(int)x; printf(x=%f,i=%d,x,i); return 0; } 精度损失问题 较高类型向较低类型 转换时可能发生 结果:x=3.600000,i=3 混合运算时数据类型的转换 例:编写程序计算a+3*-2/(int)(a+b)-12的值。 其中a=1.7,b=2.4 #include stdio.h int main() { float a=1.7,b=2.4,s; s= a+3*-2/(int)(a+b)-12; printf(result is %f\n,s); return 0; } result is –11.300000 思考: x=3.0, y=4 计算1/2*x+20%3*(x=y)/16的值 0.5 变量的命名规则 数据类型 char,short,int,long,float,double,long double signed,unsigned 常量、转义字符 运算符 算术、增一/减一、赋值运算符、类型强转、逗号、sizeof 类型转换 优先级和结合性 这一

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档