文章目录
一、逗号表达式
逗号表达式就是由逗号隔开的表达式,如:
exp1, exp2, exp3 ,···expN
可以有n个表达式,中间由逗号隔开,它的特点就是每一个表达式都要进行运算,但是整个逗号表达式的结果是最后一个表达式的结果,如图下代码:
根据它的特点,首先我们要将每个表达式依次进行运算,然后取最后一个表达式的值作为最后的结果,那可能就有同学要问了,为什么要一个一个把前面表达式的值算出来,再取最后表达式的值作为结果,而不是直接算出最后表达式的结果
在我们上面举的例子就进行了很好的说明,后面表达式的b = a +1,而前面的表达式a = b +10,对a的值产生了影响,也就对最后的表达式表达式的b = a +1产生了影响,所以在计算逗号表达式时,我们要依次算出每个表达式的值,然后将最后一个表达式的值作为整个逗号表达式的结果
接着我们来看看上面所示代码的结果,首先第一个表达式是a > b,它的结果为假,也就是0,但是没有用变量存起来什么的,没有什么作用,第二个表达式的结果为12,然后将12赋值给了a,现在a就是12,后面那个表达式a单独存在也没有用,直接看最后一个表达式,b = a +1,表达式的结果为13,然后将13赋值给了b,所以由此得出a的值为12,b的值13,c的值为13,代码运行结果如图:
二、下标访问操作符[]、函数调用操作符()
这两个操作符我们都很熟悉了,这里简单再次介绍一下
1.下标访问操作符[]
它是一个双目操作符,它的两个操作数是数组名和一个索引值(下标),相信大家对它已经很熟了,在数组中已经讲过,这里举个例子:
int arr[10];//创建数组
arr[9] = 10;//使⽤下标访问操作符。
[ ]的两个操作数是arr和9
2.函数调用操作符
接受⼀个或者多个操作数:第⼀个操作数是函数名,剩余的操作数就是传递给函数的参数,但是至少会接受一个操作数,就是函数名,因为函数可能没有参数,比如我们之前在猜数字游戏和扫雷游戏中的菜单,menu()函数,它就没有参数,这里的函数调用操作符()就只有一个操作数函数名menu
再比如我们之前写的函数Add,它可以实现两个整型的相加,如图:
这里的函数调用操作符()就有三个操作数,分别是函数名Add、以及参数2、3,
三、结构成员访问操作符
这里我们简单介绍一下结构体和结构成员访问操作符,后期会专门出一篇博客来讲解结构体
1.结构体
C语⾔已经提供了内置类型,如:char、short、int、long、float、double等,但是只有这些内置类型还是不够的,假设我想描述学⽣,描述⼀本书,这时单⼀的内置类型是不⾏的。
描述⼀个学⽣需要名字、年龄、学号、⾝⾼、体重等;
描述⼀本书需要作者、出版社、定价等。C语⾔为了解决这个问题,增加了结构体这种⾃定义的数据类型,让程序员可以⾃⼰创造适合的类型
2.结构的声明
需要使用关键字struct,具体格式如下:
struct 结构体名
{
成员列表
}变量列表;
//变量列表可以省略,但是最后的分号不能丢
以上是语法规定的格式,成员列表就是这个结构体有哪些具体的结构体变量,变量列表就是,可以直接在那里创建结构体变量,也可以省略不创建,但是分号不能丢,看了是不是还是有点懵,我们具体举例来看看如何用结构体来描述一个学生:
struct Stu//结构体名
{
//成员列表:
char name[20];//名字
int age;//年龄
char sex[5];//性别
char id[20];//学号
}; //分号不能丢
3.结构体变量的定义和初始化
(1)结构体变量的定义
对结构体变量的定义有两种方式,一种是直接在创建结构体时,在最后直接写出结构体变量,注意分号不能丢,如下:
struct Point
{
int x;
int y;
}p1; //声明时定义变量p1
第二种就是像定义变量那样定义结构体变量,只要清楚一点:struct Point相当于就是它的类型,然后就跟普通的变量定义相同了,如下:
struct Point
{
int x