第3章-运算符与表达式.ppt
文本预览下载声明
运算符和表达式 C语言的运算符: C语言的运算符分为13类。 算术运算符 下标运算符 关系运算符 分量运算符 逻辑运算符 强制类型转换运算符 赋值运算符 求字节数运算符 条件运算符 位运算符 逗号运算符 其他运算符 指针运算符 C语言的表达式: 用运算符将运算对象(常量、变量、函数等)连接而成的式子。 ??? 例如:如 a*b/c-1.5+a 一、算术运算符与算术表达式 1、基本算术运算符 +(加) -(减) *(乘) /(除) %(求余数) 注意: ⑴乘号不能省略。 如 a*b不能写作ab。 ⑵表达式中一律使用圆括号。 ⑶两整数相除,结果仍为整数。 如 3/5=0、-5/3=-1 (称为截断取整,即直接将小数部分截去) ⑷求余数运算只能用于整型数据之间,且余数与被除数同号。 如 5%3=2、-5%3=-2、 5%-3=2、- 5%-3=-2 ⑸求乘方运算要使用函数pow(x,y)。 如 23应表示为pow(2,3)。 2、算术表达式 ⑴概念 用算术运算符将运算对象(常量、变量、函数等)连接而成的式子。 ??? 如 a*b/c-1.5+a ⑵运算符的优先级 即一个表达式中不同运算符之间进行运算的先后次序。 如 a-b*c。 ⑶运算符的结合性 当一个运算对象两侧的运算符优先级相同时, 若先按左侧运算,则称为左结合性;反之,称为右结合性。 如 10/5*2中*与/均为左结合性。 3 数据类型转换 (1) 在C语言中,整型、实型和字符型数据间可以混合运算(因为字符数据与整型数据可以通用)。 如果一个运算符两侧的操作数的数据类型不同,则系统按“先转换、后运算”的原则,转换的方法有两种:自动转换(隐式转换);强制转换。 1、自动动转换(隐式转换) 自动转换发生在不同类型数据进行混合运算时,由编译系统自动完成。转换规则:(参看下页图示)(1) 类型不同,先转换为同一类型,然后进行运算。 (2)图中纵向的箭头表示当运算对象为不同类型时转换的方向。可以看到箭头由低级别数据类型指向高级别数据类型,即数据总是由低级别向高级别转换。即按数据长度增加的方向进行,保证精度不降低。 (3)图中横向向左的箭头表示必定的转换(不必考虑其它运算对象)。如字符数据参与运算必定转化为整数,float型数据在运算时一律先转换为双精度型,以提高运算精度(即使是两个float型数据相加,也先都转换为double型,然后再相加)。 (4)赋值运算,如果赋值号“=”两边的数据类型不同,赋值号右边的类型转换为左边的类型。 main() { float PI=3.14159; /*PI为实型,s、r为整型*/ int s,r=5; s=r*r*PI; /* r和PI都转换成double型计算,结果也为double型。但由于s为整型,故赋值结果仍为整型,舍去了小数部分。*/ printf(s=%d\n,s); } 输出结果为:s=78 二、强制类型转换 用于强制转换一个表达式的类型。 格式: (类型名)(表达式) 如 float x,y; (int)(x+y) (int)x+y (float)(5%3) 注意: 强制类型转换不影响原变量的类型和值。 例 强制类型转换。 main( ) ?? {float x; ??? int i; ??? x=4.5; ??? i=(int)x; ??? printf(x=%f,i=%d\n,x,i); ??? } 运行结果为x=4.500000,i=4 三、赋值运算符和赋值表达式 1、赋值运算符= 2、赋值表达式 格式:变量=表达式 功能:求出表达式的值并存入左侧变量中。 如 a=3 a=a+1 a=b=c=5 注意: ⑴赋值运算符不同于数学中的等号。 ⑵赋值表达式的值就是左侧变量的值。 如 a=(b=10)/(c=2) b=3;printf(%d,a=b); ⑶赋值运算符具有右结合性。 如 a=b=c=
显示全部