算术运算符+ - /(除) %(取余数)
关系运算符> >= < <= !=(不等于) ==(等于)
逻辑运算符!(非) &&(并且) ||(或)
赋值运算符= += *= /= -=
优先级别:
算术>关系>逻辑>赋值
算术运算符
除法/的运算结果和运算对象的数据类型有关,两个都是int,则商就是int,若商有小数,则截取小数部分;被除数和除数中只要有一个或两个都是浮点型数据,则商也是浮点型,不截取小数部分
例如:16/5==3 16/5.0==3.20000 -13/4==-4
-13/-3==4 3/5==0 5/3==1
取余%的运算对象必须是整数,结果是整数后的余数,其余数的符号与本除数相同
例如:13%3==1 13%-3==1 -13%3==-1
-13%23==-13 3%5==3
逻辑运算符
真&&真 真
真&&假 假
假&&真 假
真||假 真
假||真 真
真||真 真
假||假 假
C语言对真假处理 真是1表示 假是0表示
非零是真
零是假
&&左边的表达式为假 右边的表达式一定不运行
||左边的表达式为真 右边的表达式不运行
左边是假的则看右边右边一真则逻辑是真的执行
例如:
int i = 10;
int k = 20;
int m;
m=(3>2) && (k=8);//k=8是赋值
//不含有分号的是表达式
printf("m = %d, k = %d\n", m, k);
m的值要么是0要么是1,k的值是8
易错:
int i = 10;
int k = 20;
int m;
m=(1>2) && (k=5);
printf("m = %d, k = %d\n", m, k);
输出结果是m=0 ,k=20//因为前面(1>2)是假的,运行到前面的假后,循环终止,后面k=5不运行,所以k是按最开始赋值给答案
自增(或自减):
前自增--++i
后自增--i++
相同点:最终都是使i的值加1
不同点:前自增整体表达式的值是i加1之后的值
后自增整体表达式的值是i加1之前的值
**i++和++i单独成一个语句,不要把它作为一个完整复合语句的一部分来使用
例如:int m=i++ + ++i +i +i++//这样写是错的
三目运算符:
A ? B : C
等价于
if(A)
B;
else
C;
逗号表达式:
A , B, C, D
功能:从左到右执行,最终表达式的值是最后一项的值D
提醒:j+2(没赋值)不等于j+=2