C语言第三章(续)
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分量运算符
. ->
下标运算符
[]
其它
运算符的优先级和结合性见教材附录III
2 算术运算符和算术表达式
2.1、基本的算术运算符 + (加法运算符,或正值运算符):如 2 + 3、+6 - (减法运算符,或负值运算符):如 3 - 4、-6 * (乘法运算符):如 3 * 4 / (除法运算符):
两个整数相除,其值为整数,如 5 / 3值为1 除数、被除数中有一个为负值时,结果向零取整,如-5/3为 -1 除数、被除数中有一个为实数时,结果为 double 型
注意: (1)自增、自减运算符只能用于变量,而不能用于常量 或表达式 如:5++ ( a+b)++不合法 (2)++ 和 - - 的优先级高于算术运算符,结合方向是 “自右相左”
如:-i++ 相当于 - ( i++ )
第3章(续) 运算符与表达式
本讲主要内容:
1. 运算符和表达式 2.算术运算符和算术表达式 3.赋值运算符和赋值表达式 4.自增、自减运算符 5.逗号运算符和逗号表达式 6 .不同类型数据间的混合运算 7. 课后作业
1 运算符和表达式
表达式是常量、变量、数组元素、函数等运算对象和运算 符以及括号的有意义组合
如:设 i 为整型变量,执行 i = 5.34 i 的值为 5
3)整型数据赋给实型变量时,数值不变,但以浮点数形 式存储到变量中。
如:对 float 型变量 f ,执行 f = 23 f 的值为 23.00000
例3.9 main ( ) { int i;
float f; i = 5.34; f = 23; printf ( “i=%d,f= %f\n", i, f ); } 上机演示
% (模(求余)运算符): % 两侧均为整型数据
如 7 % 4 的值为 3
-7 % 4 ,7 % -4 ,-7 % -4的值为多少?
(-3,3,-3)
2.2、算术表达式和运算符的优先级与结合型
1)用算术运算符和括号将运算对象(操作数)连接起来
的、符合 C 语言语法规则的式子,称作算术表达式。
如:-123
可以利用强制类型转换运算 符将一个表达式转换成所需 类型。 如: ( double ) a
( int ) ( x + y ) 与 ( int ) x + y不同
( float ) ( 8 % 5 )
例3.7
void main ( ) { float x;
int i; x = 3.6; i = ( int ) x + 2; printf ( "%f, %d\n", x, i );
5 = x; x+1 = y * a + 3; 都是非法的 C 语句
说明1:在 C 语言中判断是否相等用关系运算(= =)。 说明2:运算结果—— 赋值表达式的值等于左边变量的值!
3.2、赋值结果与类型转换
1)如果两边的类型一致,就直接赋值;否则需要进行类 型转换。
2)实型数据(包括单、双精度)赋给整型变量时,舍弃 实数的小数部分。
类似数学算式或公式wenku.baidu.com但写法有不同
C 运算符
算术运算符 + - * / % 关系运算符 > < = = >= <= != 逻辑运算符 ! && || 位运算符 << >> ~ | ^ & 赋值运算符 = 条件运算符 ? : 逗号运算符 ,
指针运算符
*&
求字节数运算符
sizeof
强制类型转换运算符 类型
}
3. 赋值运算符和赋值表达式
3.1.赋值运算符“ =” 用法:变量 = 表达式 作用:将表达式的值赋给变量(构成赋值表达式)
如:a = 5;
5 => a
ave = ( a + b ) / 2;先计算(a+b)/2,结果赋给 ave
x = y = z; 首先 z => y,然后(y=z)=> x
与数学上的等式不同!
l=6324232 0 0 00 00 00 01 10 00 00 10 00 00 00 00 00 10 00
i = -32760 10 00 00 00 00 00 10 00
3.3. 复合的赋值运算符 赋值运算符与其他运算符的组合构成复合的运算符
算术运算:+=,- =,*=,/=,%= 位运算: <<=,>>=,&=,^=,|= 说明:位运算在12章中介绍。
4)无符号整型与有符号整型
例3.10
1 1 11 11 11 11 11 11 11 b
void main( )
{ unsigned a; int b = -1;
11 11 11 11 11 11 11 11 a
a = b;
printf ( "%d -> %u\n", b, a );
a = 65534u; b = a ;
例如: a += 3 x *= y + 8 x %= 3
等价于 a = a + 3 等价于 x = x * ( y + 8 ) 注意有括号 等价于 x = x % 3
4、自增、自减运算符
++ i,--i 在使用 i 之前,先使 i 的值加 1 或减 1 i++,i-- 在使用 i 之后,使 i 的值加 1 或减 1
i 1 1 11 11 11 11 11 11 10
② “长”数据赋给“短”变量
截断:
只将数据的低字节位原 封不动送到变量中
例3.12 程序编译时有警告错 void main ( ) { int i;
long l = 6324232L; i = l; printf ( " i = %d\n", i ); }
a+b
10*(alpha+1.5)*sin(beta)
2)运算符有优先级和结合性 优先级:算术运算符先 *、 / 、% 后 +、 结合型:左结合,即表达式从左向右进行计算 如: a + b /(c + d % e)- 3.3 + '4' * '3'
3.3、类型转换与强制类型转换
同一运算符相连的运算数的数据类型自动从短类型向长类 型转化,如上例
printf ( "%d -> %u\n", b, a );
}
5)char、int、long等类型的转换
①“短”数据赋给“长”变量
保持数值不变
符号扩展: 若最高位为 1(负数),则变量高字节 位补 1;反之,补 0。
00 10 10 11
i 0 0 00 00 00 00 10 10 11 11 11 11 10