2.2.1运算符及表达式
2.2.2算数运算符
算术运算符包括+(加)、-(减)、*(乘)、/(除)、%(余数)。
1.+、-、* 、/ 运算符的运算量可以是任何整型或浮点型常量、变量、有返回值的函数及其表达式
- x/y时,y的值不能为0.
3.%求余数运算符要求运算量必须是整型,且%后面的量不为0,且余数的正负取决于被除数,
例如4%2 结果为0
-15%2 结果为-1
8%0 错误;
4.当双目运算符的两个运算量的类型相同时,它们的运算结果类型与运算量类型相同。
但是两个运算量类型不同时,运算前会按照一般的转换规则转换为相同类型。
例如15.5+5运算时将5转换为浮点数5.0,结果为20.5.
5.强制类型转换是靠强制类型转换运算符来实现数据类型转换的,一般类型为:
(类型名)表达式
例如
float x=6.5;
int y;
y=(int)x;
结果: y=6;x=6.5;
2.2.3自增自减运算
++ (自增),- (自减)都是单目运算符,都有前置和后置两种不同的形式,两种形式单独使用时并没有区别, 但是代入表达式中的时候,前置式先进行自增或自减运算,再代入表达式运算,面后置式先用原值进行后再进行自增或者自减运算。
注意:自增和自减运算只能用于变量,不能用于常量。
++i | 先执行i+1,再使用i |
---|---|
i++ | 先使用i,再执行i+1 |
2.2.4关系运算符
关系运算符都是双目运算符,它用来比较两个运算量之间大小关系。
C语言中的关系运算符主要包括:
< (小于) ,<=(小于等于),= (等于) ,>=(大于等于)> (大于),! (不等于)。
2.2.5逻辑运算符
C语首中的逻机运算符包括&及《遭辑与),1(逻辑成)、,(逻辑非,单目运算符), 逻辑运算行88.步个在达火类型可以不同, 运期时也不需要类型转化只要遵循非0视为真,0值视为假。运算结果也只有0
注意: &&只要左边为逻辑0,右边的表达式计算机将不会计做,同理,左边为逻辑1,右边不计算。
例如 int a=1,b=0,c;
c=++a||++b;
b=!b;
结果:c=1,b=1,a=2;
2.2.6赋值运算符
1.基本赋值运算符“="是一个双目运算符,它的一般表达式为:
左值表达式=右值表达式
注意:在进行赋值运算前,会自动把右值表达式的值类型自动转换为左值表达式的值类型。右→左
2.在赋值运算符“=”前加上其他运算符,便构成了复合赋值运算符。如果用op来代表加在“=”之前的运算符,则复合赋值运算符可以表示为“op-”。一般形 式为:
左值表达式op=右值表达式
例如inti=0; i+=1;//i+=1表示i=i+1结果: i=1。
2.2.7 条件运算符
条件运算符(? :)是C语言中唯一的三目运算符,它的一般形式为:
表达式1?表达式2:表达式3
它的运算过程是:判断表达式1的值,如果非0,执行表达式2,如果为0,则执行表达式3.
例如int a,b;
(a>b)?a:b
当a>b成立时,条件表达式的值为a,否则,条件表达式的结果为b。
(a-=b)?0: ((a>b)?-1:1)
这是一个嵌套的表达式,先算内层表达式,再算外层表达式的值。
2.2.8逗号运算符
逗号运算符是双目运算符,用它可以构成逗号表达式。一般形式为:表达式1,表达式2,…表达式n
逗号运算的每个表达式分开进行计算,从表达式1按一定顺序一直求到表达式n,最后的表达式的值就是该逗号表达式的值
例如 int i=1,j=0,k;
k=(i++,j++,i+j);
最后k的结果为3。