一、运算符
下面好多运算发,但是我们只讲基础的,还有一些会夹在其他知识点的时候讲解
-
算术运算符:
+
(加法)、-
(减法)、*
(乘法)、/
(除法)、%
(取模,即求余数)。 -
关系运算符:
>
(大于)、<
(小于)、>=
(大于等于)、<=
(小于等于)、==
(等于)、!=
(不等于)。 -
逻辑运算符:
&&
(逻辑与)、||
(逻辑或)、!
(逻辑非)。 -
位运算符:
&
(按位与)、|
(按位或)、^
(按位异或)、~
(按位取反)、<<
(左移)、>>
(右移)。 -
赋值运算符:
=
、+=
、-=
、*=
、/=
、%=
等。 -
自增自减运算符:
++
(自增)、--
(自减)。 -
条件运算符(三目运算符):
? :
-
逗号运算符:
,
-
指针运算符:
*
(取值)、&
(取地址) -
求字节数运算符:
sizeof
-
强制类型转换运算符:
(类型名)
-
下标运算符:[]
-
等等。。。。
二、基本的算术运算符
运算符 | 含义 |
+ | 正号或相加 |
- | 负号或相减 |
* | 乘法运算符 |
/ | 除法运算发 |
% | 求余运算发(又叫模运算) |
#include <stdio.h>
main() {
sums(); //调用讲解算术运算符的函数
}
sums() {
float a, b;
int c,d;
a = 1.0, b = 2.1,c=3,d=4;
printf("%f\n", +a);
printf("%f\n",-a);
printf("%f\n",a*b);
printf("%f\n",c/a);
printf("%d\n",d%c);
printf("%d\n",a+d); //将一个浮点数与整数相加的结果(其结果为浮点数)以整数格式 %d 进行输出,这会导致未定义的行为所以结果为0
printf("%f\n",b-c);
}
三、自增和自减
多使用在循环中,此处认识它,知道怎么使用
- 自增(++):就是使变量值自动加1
- 自减(--):就是使变量值自动减1
#include <stdio.h>
main() {
SelfIF(); //调用自增自减函数
}
SelfIF() {
int a, b;
a = 1, b = 1;
printf("++a的值为:%d\n", ++a); //这里是a先进行加1在输出
printf("b++的值为:%d\n", b++); //这里是先输出再对b加1
printf("--b的值为:%d\n", --b); //因为b在上面最后加1了所以值为2-1=1
printf("b--的值为:%d\n", b--); //因为b先输出后减1所以此处的值为1,但是最终b等于0了
printf("b最终的值为:%d\n",b);
}
四、强制类型转换
#include <stdio.h>
//格式为:(类型名)(表达式)
main() {
Force_Conversion(); //调用类型强制转换函数
}
Force_Conversion() {
int a = 1;
float b = 3.14;
char c = 'a';
printf("%d\n", a%(int)b); //变为1%3余数为1
printf("%d\n", (int)c + a); //a对应的ascll值为97,即为97+1=98
printf("%f\n",(float)a+b); //1.0+3.14=4.14
}
五、运算符优先级(由高到低)
- 圆括号
()
- 单目运算符(包括
!
、~
、++
、--
、+
(正号)、-
(负号)、*
(指针)、&
(取地址) ) - 算术运算符(
*
、/
、%
) - 算术运算符(
+
、-
) - 移位运算符(
<<
、>>
) - 关系运算符(
<
、<=
、>
、>=
) - 相等性运算符(
==
、!=
) - 位与运算符
&
- 位异或运算符
^
- 位或运算符
|
- 逻辑与运算符
&&
- 逻辑或运算符
||
- 条件运算符(三目运算符)
? :
- 赋值运算符(
=
、+=
、-=
、*=
、/=
、%=
等 ) - 逗号运算符
,
需要注意的是,复杂表达式中如果对运算符的优先级不确定,为了避免错误,应使用括号明确运算的顺序。