运算符
运算符按照功能分可分为:赋值运算符、算数运算符、关系运算符、逻辑运算符、位运算符(针对二进制数值)、自增自减运算符、复合运算符、逗号运算符、三目运算符。
1. 赋值运算符
功能:将等号右侧的内容赋值给等号左侧。注意:等号左侧不能是常量,否则会报错。
注:当赋值运算符左右两侧类型不一致时,默认往等号左侧转(小数转整数,舍弃小数点后面的内容)如图:
如图所示,a为int型变量,b为float型变量,当把b赋值给a时,由于默认往等号左侧转,即往a的int型上转,所以b赋值给a后,输出为66。
2.算数运算符:+ - * / %
/ ---除; *---乘 %----取余数(注意取余数时左右两边都要是整数) +----加 - ---减
eg: int num = 10/3 --> num=3
int num = 10%3 --> num=1
注:当算术运算符左右两侧类型不一致时,默认往高精度转换,转换顺序如下:
char-->int-->float-->double
3.关系运算符: > >= < <= == !=
运算结果:只有0(不成立)和1(成立)
eg: a=(3==4); ---> a=0;(因为3不等于4,不成立为假,所以a的值为0)
a=(3<4);----->a=1;(3小于4成立为真,所以a=1);
a=(1!=0);----->a=1;(1不等于0,成立为真,所以a=1);
4.逻辑运算符 && || !
运算结果:只有0和1
&&:左右两侧都为真,结果为1,否则是0;
eg: a=(3<=3)&&(100<101); ----> a=1(3小于等于3成立为真,100小于101为真,最后a=1)
int a=1,b=2,c=3,m=5;
m=(a<b)&&(c==9); ---->m=0(a虽然小于b,但是c不等于9,所以m为0)
m=(a<b)&&(c=9); ----->m=1,c=9;(a小于b,把9赋值给c,都不为0,则m为1)
m=(a>b)&&(c=9); ----->m=0,c=3;(a大于b不成立,m为0,后面不再运算,所以c仍然为3)
注:&&:前面为假,后面不再运算;
|| :左右两侧有一个为真,结果为1,都不为真,结果为0
eg: int a=1,b=2,c=3,m=5;
m=(a>b)||(c=9); ---->m=1,c=9(a大于b为假,但后面c=9不为0为真,所以m=1且c=9)
m=(a<b)||(c=9); ---->m=1,c=3(a小于b为真,后面不再运算,所以m=1,c=3)
注:|| :前面为真,后面就不再运算。
!:逻辑取反
eg: !0=1; !1=0; !(-1)=0;
5.位运算符(针对二进制数) & | ^ << >> ~
(1) &:与运算符:全1为1,否则为0
eg:
(2)|:或运算符:见1为1,全0为0;
eg:
(3)^:异或运算符:相同为0,不同为1;
eg:
(4)<< >>:移位运算符;~:取反运算符;
<<:所有的位通通向左移动,低位补0;
>>:所有的位通通向右移动,高位补0;
~:按位取反:0变1,1变0;
eg:
6.自增自减运算符: ++(自身加一) --(自身减一)
eg:int num =100;
num++;---->num=num+1; ---->num=101;(减减同)
注 :当式子中有其他运算时: ++在前,先自身加1,再参与运算;++在后,先参与其他运算,再自身加1。(减减同)
eg:int a= 100;
int b=++a;----->a=101;b=101;
int a=100;
int b=a++;-------->a=101;b=100;
7.复合运算符: += -= *= /= %= >>= <<= &= |= ^=
eg: int num=100;
num+=99; ----> num=num+99;------>num=99;
num*=2; ---->num=num*2;------>num=200;
num%=3 ------>num=num%3----->num=1;
>>= <<= &= |= ^= 即把对应的二进制进行位运算即可。(可参照5.位运算符)
8.三目运算符
结果=(表达式 1)?(表达式 2):(表达式 3);
先运算表达式 1,表达式 1 为真,就运行表达式 2,整个三目运算符的结果就是表达式 2 的结 果,表达式 3 不再运算;
先运算表达式 1,表达式 1 为假,就运行表达式 3,整个三目运算符的结果就是表达式 3 的结 果,表达式 2 不再运算;
eg:
9.附录 运算符优先级表
今天的C语言学习就到这里啦,有什么不太清楚或是想要讨论的,欢迎在评论区里留言~
长路漫漫亦灿灿,你终将会成为更好地自己,加油!