第三章第6节 §36变量赋初值 在定义变量的同时使其初始化 例: int a=3 相当于: int a a=3; char c=a 相当于: Int c I? int ab=2.c=5 相当于: Int a,b.c: 变量赋初值是在程序运行时执行的,而不是在编译时完成的
第三章 第6节 ——在定义变量的同时使其初始化 例: int a=3 ; §3.6 变 量 赋 初 值 相当于: int a; a=3; char c=‘a’ ; 相当于: int c; c=‘a’; int a,b=2,c=5 ; 相当于: int a,b,c; b=2; c=5; 注: 变量赋初值是在程序运行时执行的, 而不是在编译时完成的
第三章第7节 §37各类数值型数据间的混合运算 各类型数据可以混合运算但系统要先进行类型转换,然后进行运算 高 double float 规则 不同类型的转换方向 on 必须进行的转换 unsigned 低 int char sho 说明:1)横向:必须进行的转换 例:两个foat类型相加,先foat→ double→相加。目的:提高精度 2)纵向:不同类型的转换方向,结果为参加运算数值的高级别类型。 例 double t二中地+一山 float→ double ong +→ double double long
规则 §3.7 各类数值型数据间的混合运算 第三章 第7节 各类型数据可以混合运算,但系统要先进行类型转换,然后进行运算 。 double float long unsigned int char short, 不 同 类 型 的 转 换 方 向 低 高 必须进行的转换 说明: 1) 横向: 必须进行的转换 例: 两个float类型相加, 先float → double → 相加。目的:提高精度 2) 纵向 : 不同类型的转换方向, 结果为参加运算数值的高级别类型。 例 double + int double + double float + int + double double double long + int long + long
第三章第7节 10+ +i* f Int char int float double long nt double double double double double
第三章 第7节 10 + ‘a’ + i * f - d / e int char int float double long int int double double double double double
第三章第8节 §38算术运算符及算术表达式 C的运算符简介 算术运算符 关系运算符 逻辑运算符 !&& 赋值运算符 逗号运算符 条件运算符 强制类型转换运算符( 指针运算符 & 求字节数 sizeof 分量运算符 下标运算符 位运算 <>> & 注意:1)要求运算量的个数.“日数” 2)要求运算量的类型 3)优先级别和结合性
第三章 第8节 §3.8 算术运算符及算术表达式 一. C的运算符简介 *算术运算符 + - * / % 关系运算符 > = 下标运算符 [ ] 位运算 > ~ | ^ & 注意: 1)要求运算量的个数. “目数” 2)要求运算量的类型. 3)优先级别和结合性
第三章第8节 二.算术运算符及算术表达式 1.基本的算术运算符 /,% 说明:1)两in数相除,结果为int 5/2→2(5÷2=2.5,0.5舍去) 50/2→2.55/20→2.5 5/2→?f-3 多数系统向“零”取整,结果为:-2 2)%(求余数、模运算)要求运算量为int 2算术表式的算术运算符的优先性和结合性 1)算术表达式用算术运算符将运算对象(常量、变量、函数等) 连接起来,并符合C语法规则的式子 (即由+ *、/、%、常量、变量等组成)
二. 算术运算符及算术表达式 第三章 第8节 1. 基本的算术运算符 + , - , * , /, % 说明: 1)两 int数相除,结果为int 5/2 →2 (5÷ 2=2.5, 0.5舍去) 5.0/2 →2.5 5/2.0 →2.5 -3 -5/2 → ? 多数系统向“零”取整, 结果为: -2 -2 2) %(求余数、模运算)要求运算量为int 2. 算术表式的算术运算符的优先性和结合性 1)算术表达式——用算术运算符将运算对象(常量、变量、函数等) 连接起来,并符合C语法规则的式子 (即由+ 、-、* 、/、 %、常量、变量等组成)
第三章第8节 例:将下列式子写成C的表达式 e+v/5 30 los g22 y=pow(exp(x)+y/5.0)/(log10(z)/log10(20)),1.0/3.0)+ tan(30.023.14l6/180.0) x+z sin(a+B") y= pow((pow(x, 3.0)+z), 1.0/3.0)/sin(alfa+ pow (beta, n) 2)运算符的优先性和结合性 (1)优先性 圆括号1++,-”, 算术 关系 逻辑条件赋值逗号 (类型) 先*/%> && 后+ 高 低
例: 将下列式子写成C的表达式 0 3 2 30 log / 5 tg z e y y x + + = 第三章 第8节 y = pow ( ( (exp(x)+y/5.0 ) / (log10(z)/log10(2.0))) , 1.0/3.0) + tan(30.0*3.1416/180.0) sin( ) 3 3 n x z y + + = y = pow ( (pow(x,3.0)+z),1.0/3.0) / sin(alfa+ pow(beta,n)) 2). 运算符的优先性和结合性 (1) 优先性 圆括号 !+ +,- -, (类型) 算术 先* / % 后+ - 关系 >, >= < ,<= ==,!= 逻辑 && || 条件 赋值 逗号 高 低
第三章第8节 (2)结合性 当运算对象两则的运算符优先级相同时,出现结合性问题 左结合计算顺序:左→右即运算对象先与左边运算符结合 括号、算术、关系、逻辑,逗号—左结合 a+b-c—(a+b) a/b*c a/b)°c 右结合计算顺序:左一右即运算对象先与右边运算符结合 赋值、条件右结合 c=b=c+d C=(b=(c+d) 3强制类型转换运算符 格式 (类型名)表达式) 作用 将表达式的值强制转换成所需类型
第三章 第8节 (2). 结合性 ——当运算对象两则的运算符优先级相同时,出现结合性问题 左结合 右结合 计算顺序:左 右 即运算对象先与左边运算符结合 a+b-c (a+b)-c a/b*c (a/b)*c 计算顺序:左 右 即运算对象先与右边运算符结合 括号、算术、关系、逻辑,逗号——左结合 赋值、条件——右结合 c=b=c+d c=(b=(c+d)) 3. 强制类型转换运算符 格式 (类型名)(表达式) 作用 将表达式的值强制转换成所需类型
第三章第8节 例 main() i float x X=3.6 强制类型转换只得 (int)(x) 个中间结果,不影响 printf( x=%f, i=%,,i) 变量原来的类型。 结果:x=3.6000001=3 4.自增、自减运算符 十、 使变量的值+1 ++1.--1 使用以前,使的值+1(-1) 1++1- 使用以后,才使值+1(-1); ma i=3;1l=l;m=2; ++ k=I+ printf("j, k, l, m=%d, %d, %d, %dj, k, 1,++ m) 结果:k,m=4,2,3
第三章 第8节 例: main( ) { float x; int i; x=3.6; i=(int)(x); printf(“x=%f,i=%d”,x,i); } 结果:x=3.600000, i=3 注: 强制类型转换只得 一个中间结果,不影响 变量原来的类型。 4. 自增、自减运算符 ++、-- ——使变量的值+1、-1 ++i, --i 使用i以前,使i的值+1(-1); i++,i-- 使用i以后,才使i的值+1(-1); main() { int i,j,k,l,m; i=3; l=1; m=2; j = + + i; k = l+ +; printf(“j,k,l,m=%d,%d,%d,%d”,j,k,l,++ m) } 结果: j,k,l,m=4,1,2,3
第三章第8节 说明: 1)艹,-运算符只能用于变量,不能用于表达式 (a+b)++非法 2)结合性:右结合 -(i++) -i++ 3)表达式中易出错 如:i的原值为3 3+4+5,)为61不同的系统处 k=(i++)+(i++)+(i++) 理方式不同 3+3+3,变为6 Turbo'C中的处理 k=(+i)+(++i)+(++i) 4+5+6,i变为6 变为6,k=6+6+6, 又如:i1 结果: k=(++i)+4+(i++) i=3,k=8 k=(+i)+4+(i-) i=1,k=8
第三章 第8节 说明: 1) ++,-- 运算符只能用于变量,不能用于表达式 (a+b)++ 非法 2)结合性:右结合 -i ++ -(i++) (-i)++ 3) 表达式中易出错 如: i的原值为3 k=(i++)+(i++)+(i++) 3+4+5, i变为6 3+3+3, i变为6 不同的系统处 理方式不同 Turbo C中的处理 k=(++i)+(++i)+(++i) 4+5+6, i变为6 i变为6, k=6+6+6, 又如: i=1 结果: k=(++i)+4+(i++) i=3, k=8 k=(++i)+4+(i--) i=1,k=8
第三章第8节 4)运算符为多字符 C规定:从左→右,尽可能多地将若干字符当成一个运算符 如:i++j(i++)+ 例 main dint i,j, k; i=1:k=3 j=3-i++; printf((“%d,%d”k++,i); 结果:2,3,2
第三章 第8节 4) 运算符为多字符 C规定:从左→右, 尽可能多地将若干字符当成一个运算符 如: i+++j (i++)+j 例 main( ) { int i,j,k; i=1; k=3; j = 3- i++; printf(“%d,%d”,j,-k++,i); } 结果: 2,-3,2