(内容为学习笔记,如有错误,还望指正,如有遗漏,还望补充)
1.算术运算符
1)+ 加
int a = 3;
int b = 4;
int c = a + b;
printf("%d\n",c);//c=7
2)- 减
int a = 3;
int b = 4;
int c = a - b;
printf("%d\n",c);//c=-1
3)* 乘
int a = 3;
int b = 4;
int c = a * b;
printf("%d\n",c);//c=12
4)/ 除
int a = 3;
int b = 4;
int c = a / b;
printf("%d\n",c);//c=0
//注意看此处3除以4,并不是0.75,而是得0余3,'/'除号只取商不取余数
//整数相除,除不了的部分直接舍弃
//小数相除得小数,规则和小学数学是一样的
//整数和小数相除按照小数和小数相除计算
//除数不能是0,会导致程序崩溃
5)% 求余
int a = 3;
int b = 4;
int c = a % b;
printf("%d\n",c);//c=3
//注意此处同上结果是得0余3,求余运算只取余数,结果为3
2.关系运算符
1)> 大于
2)< 小于
3)>= 大于等于
4)<= 小于等于
5)== 等于 //注意'='是赋值,'=='才是比较
6)!= 不等于
3.逻辑运算符
1)&& 逻辑与
2)|| 逻辑或
3)! 逻辑非
//a=10,b=10,c=9
if(a == 10 && b == 10) printf("111\n");//输出111,与的左右两边同时为真的时候返回值为真,否则为假
if(c == 10 || b == 10) printf("111\n");//输出111,或的左右两边有一边为真返回值为真
if(c != 9 || b != 10) printf("111\n");//不输出,或左右都为假
if( !(c == 9 || b != 10) ) printf("111\n");//不输出,c==9为真,括号内或运算返回真,但是逻辑非将真变为假
4.优先级(重点)
括号>算数运算符>关系运算符>逻辑运算符
小知识:
逻辑短路特性
1)当逻辑与的左边为假时,跳过右边不执行直接反馈结果假
2)当逻辑或的左边为真时,跳过右边不执行直接反馈结果真
//a=10,b=10,c=9
if(a == 10 || b >= (b=b-1)) printf("%d\n",b);
//输出10,按理逻辑或右边对b进行运算-1,b应该是9,但是由于短路特性,右边没有执行,b的值不变
//同理
if( !(a == 9 && b >= (b=b-1)) ) printf("%d\n",b);
//输出10,按理逻辑与右边对b进行运算-1,b应该是9,但是由于短路特性,右边没有执行,b的值不变