【C语言】操作符详解2(含结构体、整型提升、算术转换)

在这里插入图片描述

一、逗号表达式

    逗号表达式就是由逗号隔开的表达式,如:

 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
评论 45
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值