运算符
1.概念
运算符是指能够进行运算的特殊符号
2.分类
1)单目运算符:一个操作数
2)双目运算符:两个操作数
3)三目运算符:三个操作数,只有一个“ ? :”
3.常用运算符
3.1赋值运算符:=
1) 运算符作用:赋予变量数值。 a = 10; a = 1+23+5*9; a = b;
2) 运算符格式:变量 = 变量;变量 = 常量,变量 = 表达式
3) 运算符结合性:右结合性,先运算运算符右边的变量或 表达式的值,再赋值给左边的变量。 a = 1+2; a = b+c; a = 1+f;
注:赋值运算符左边不能是常量或表达式,只能是变量(存储空间)。
3.2 算术运算符:+ - * / %
① 整型跟整型运算:结果只能是整数,不会得到浮点型数据。
② 类型不同:在C语言中,只有类型相同的数据才能进行算数运算,如果类型不同,低精度的数据类型会自动向高精度的数据类型转换,数据类型的精度从低到高排列:
char ---short----int ----long ---float -----double
③ 求余运算:浮点型不能进行求余运算。
#includeint main() { int a,b,c,d; printf("请输入一个三位数n"); scanf("%d",&d); a=d/100; b=d%100/10; c=d%10; printf("百位:%d 十位:%d 个位:%dn",a,b,c); }
3.3 关系运算符:>、<、>=、<=、==、!=
用于判断数据之间的关系
格式:变(常)量 表达式 变(常)量
① 关系运算符的运算结果:逻辑结果:逻辑真(1),逻辑假(0)② 关系运算符的数据:关系运算符运算的时候只关心数据的大小,不关心数据的类型
③ 关系运算符和算数运算符混合使用:先计算再判断
3.4 逻辑运算符:&&、 ||、 !
逻辑与&&:有一个为假则结果为假(当判断一个表达式为假时则后面不在运算,结果为假),全部为真则结果为真
变量1/表达式1 && 变量2/表达式2 && …… 变量n/表达式n
逻辑或||:有一个为真则结果为真(当判断一个表达式为真时则后面不在运算,结果为真),全部为假则结果为假
变量1/表达式1 || 变量2/表达式2 || ……… 变量n/表达式n
运算方向:&&、|| 从左往右开始判断
逻辑非!:取反关系,真变假、假变真
!变量/表达式
#includeint main() { int a=1,b=20,c=10,d=8,f; a = b==30 && c>20 && (d=10); printf("a:%d b:%d c:%d d:%dn",a,b,c,d); a = b==30 || c>9 || (d=10); printf("a:%d b:%d c:%d d:%dn",a,b,c,d); f = !b ; printf("a:%dn",f); }
3.5 复合运算符
赋值运算符与其他双目运算符的结合使用:+=、-=、*=、/=、%=、<<=、>>=、&=、|=、^=。
计算原则:先计算运算符右侧表达式,再代入左侧计算
#includeint main() { int a=2,b=3,c=4,d=5; a*=b; c+=d; printf(" a:%d c:%dn",a,c); }
3.6 自加自减运算符:++、--
变量加一或减一
a++/--:先参与运算在自增/减(语句结束再自增/减)
++/--a:先自增/减再参与运算
可以操作整型和浮点型数据
#includeint main() { int a=2,b=3,c,d; c=a++; d=++b; printf("c:%d d:%dn",c,d); }
3.7 逗号运算符
1)运算符作用:将多条语句变成一条语句
2)运算符格式:(语句1,语句2,……语句n)
3)运算符原则:
a)运算方向:从左到右依次运算,所有表达式的值都要进行计算。
b)运算结果:最后一个变量或表达式的值作为整体的值。
#includeint main() { int a,b,c,f = 40; a =( 12,b = 3,c = 4,45+8,f); printf("%dn",a); //40 printf("%dn",b); //3 printf("%dn",c); //4 }
3.8 条件运算符:“ ?:”
格式:条件表达式?表达式1:表达式2
原则:先计算条件表达式
1)如果为真则执行表达式1并将其作为结果
2)如果为假则执行表达式2并将其作为结果
#includeint main() { int a; printf("请输入a的值:n"); scanf("%d",&a); a == 5 ? printf("正确n"):printf("错误n") ; }
4.运算符优先级
1、括号的优先级是最高的(当你不确定运算符优先级的时候,就加括号)
2、运算符的操作数越少,优先级越高(单目运算符高于双目运算符)
3、算数运算符 >关系运算符 >位运算符 >逻辑运算符
4、与运算符 >异或运算符 >或运算符(包括逻辑运算符和位运算符)
5.数据类型转换
5.1 自动类型转换
又称为隐性类型转换,自动按照从低到高的顺序转换
例:0/3.0 --- 3.333
char类型与short类型参与运算时自动转换成int类型
5.2 强制类型转换
又称为显性类型转换,顾名思义就是强制让数据根据要求来转换数据类型。
格式:(float)a 、int a
1)char向int、float转换
转int:根据ASCII码表转换成对应的整数
转float:整数部分根据ASCII码表转换成对应的整数,小数部分用0补齐
2)int向char、float转换
转char:对256取余,并将结果赋值给char变量
转float:保留整数位,小数位补0
3)float向char、int转换
转char:去掉小数部分,并对256取余
转int:整数部分为转换结果
#includeint main() { int a = 10; printf("%dn",10/3); printf("%.2fn",10.0/3); printf("%.2fn",10/(double)3); printf("%.2fn",(float)a/3); }



