目录
一、单目操作符
1.1 单目操作符的种类
! //逻辑反操作
- //负值
+ //正值
& //取地址
sizeof //求操作数的类型长度(以字节为单位)
~ //对一个数的二进制按位取反
-- //前置、后置减减
++ //前置、后置加加
* //间接访问操作符(解引用操作符)
(强制类型转换) //强制类型转换
1.2 ! 操作符
! 是逻辑反操作,作用是真变假,假变真。(如图)
1.3 & 操作符
&操作符是用来取地址的。(如图)
1.4 sizeof 操作符
该操作符是用来求类型长度的。(如图)
1.5 ~ 操作符
该操作符在前一篇博客中有详细介绍,操作符详解1。
1.6 ++、-- 操作符
这个操作符有前置和后置的区别(如图)
1.7 (类型) 操作符
该操作符的功能是强制类型转换。
二、逗号表达式
逗号表达式是使用逗号将两个或多个表达式连接在一起的形成一个新的表达式。其本质上还是一种运算。
2.1逗号表达式的格式
(expression1,expression2,……,expressionN)
2.2逗号表达式的执行
执行法则:从左至右依次执行各个expression,并将最后一个expression作为逗号表达式的结果。
2.3 代码演示
三、下标访问[ ]、函数调用()
3.1下标引用操作符[]
下表引用操作符的操作数有两个:一个数组名 + 一个索引值 (如图):
3.2函数调用操作符()
函数操作符的操作数可以是一个也可以是两个或是多个:第一个操作符为函数名,剩余操作数为传递给函数的参数(如图):
四、结构成员访问操作符
4.1 结构体的定义
C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体。
结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量,如:标量、数组、指针,甚至是其他结构体。
如果程序中要用到多种类型的数据的数据结构,可以在程序中自己建立一个结构体类型。 (如图)
struct Student
{
int num; //学号为整型
char name[20]; //姓名为字符串
char sex; //性别为字符型
int age; //年龄为整型
float score; //成绩为实型
char addr[30]; //地址为字符串
}; //注意最后有一个分号
4.2 结构体的声明
4.2.1 形式
struct 结构体名
{成员列表};
成员列表的形式:类型名 + 成员名;
4.2.2 定义结构体类型变量
1.先声明结构体类型,再定义该类型的变量
在4.1中的代码中添上:
struct Student student1,student2;
这种方式是声明类型和定义变量分离,在声明类型后可以随时定义变量,比较灵活。
2.在声明类型的同时定义变量
struct Student
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
} student1,student2;
声明类型和定义变量放在一起进行,能直接看到结构体的结构,比较直观,在写小程序时用此方式比较方便,但写大程序时,往往要求对类型的声明和对变量的定义分别放在不同的地方,以使程序结构清晰,便于维护,所以一般不多用这种方式。
3.不指定类型名而直接定义结构体类型变量
其一般形式为:
struct 结构体名
{ 成员列表
} 变量名列表;
指定了一个无名的结构体类型,它没有名字(不出现结构体名)。显然不能再以此结构体类型去定义其他变量。这种方式用的不多。
4.3 结构体变量的初始化和引用
4.3.1 结构体成员的直接访问
结构体成员的直接访问是通过点操作符(.)访问的。点操作符接受两个操作数。如图
使用方式:结构体变量.成员变量
4.3.2 结构体成员的间接访问
有时候我们得到的不是一个结构体变量,而是得到了一个指向结构体的指针。如图
使用方式:结构体指针->成员名
五、操作符的属性:优先级、结合性
5.1 优先级
优先级是指如果一个表达式包含多个运算符,哪个运算符应该优先执行。各种运算符的优先级是不一样的。
5.2 结合性
如果两个运算符优先级相同,优先级无法确定先计算哪个,这时候需要看结合性,根据运算符是左结合,还是右结合,决定执行顺序。
5.3 运算符优先级和结合性一览表
关于操作符的详解就到此为止,欢迎大家对文章提出补充。
请支持博主,给博主点点赞和关注呦~