今天的内容是数据的运算与输入输出,因为这一块教材内容较多,所以先回顾算术、赋值、关系运算符及数据类型的强制转换
一、运算符与表达式
- 算数运算符和算数表达式算数运算符分为一目运算符和二目运算符
一目运算符:对单个变量进行操作。如正号运算符(+),负号运算符(—),自增运算符,自减运算符
二目运算符:运算中有两个变量或常量。如加、减、求余(%)
注:当x/y中有实型,运算结果为实型;若两个都是整型,则运算结果为整型;求余地两个操作数必为整型
这里重点提一下自加和自减
++i和–i:先运算,再使用变量
i++和i–:先使用变量,再运算
看一个教材上的例子:
k=10;x=k++;y=++k;
运算过程是这样的:x先引用k,所以x现在是10,然k自加变成11;k自加变为12,y引用k变为12。
先使用,后运算指用变量的原值进行运算,运算后变量自加或自减 - 算数运算符的优先级和结合方向
二目运算符:*,/,%优先级相同,但是高于加减,结合方向先左后右
一目运算符:负,自增,自减优先级相同,高于二目运算符加,减,乘,除,求余;结合方向先右后左 - 算数表达式:按运算符的优先级别:先一目,再二目,注意算数运算符的结合方向
二、赋值运算符和赋值表达式 - 赋值运算符:=,将右边表达式的值赋给左边的变量。复合算数赋值运算符有+=,—=,*=/=,%=,应先进行相应的运算,再将结果付给左边的变量
- 赋值表达式赋值表达式可以嵌套,如x=y=5
若赋值运算符的右边是包含若干项的表达式,则相当于表达式中含括号。如y*=y+z,相当于y=y*(y+z)三、关系运算符和关系表达式 - 关系运算符是用来对两个操作数进行大小或相等的比较,运算结果是真或假。一般用非零表示真,零表示假
- 关系运算符的优先级和结合方向
1).<,<=,>,>=优先级相同,高于==和!=(这两个优先级相同)
2). 优先级:算数运算符>关系运算符>赋值运算符
3).同级关系运算自左向右算
一个例子:int a=3,b=2,c=1,d;d=a>b>c;
运算过程:先算赋值运算符右边的表达式,右边从左向右算,3>2,a>b的运算结果为1,1=c,a>b>c的运算结果为0;0赋给d
四、数据类型的转换 - 自动转换
1). 不同数据类型的数据在赋值时,“=”右边的数据转换成“=”左边的数据类型,再赋值
2).实型赋给整型,舍弃小数部分,将整数部分赋给整型变量,不四舍五入。整型赋给实型,数值不变,有效数字位数增加
3). 自动转换总是由少字节型转向多字节型
9.强制转换强类型转换算符的一般形式:(类型)(表达式)
强制转换可能造成数据丢失。如(int)6.823,“.823”会丢失
以上内容来自清华大学出版社出版的教材:C语言程序设计