C语言操作符详解(下)

 6.逗号表达式

逗号隔开的多个表达式。从左向右依次执行,整个表达式的结果是最后一个表达式的结果

int main()
{
    int a=1;
    int b=2;
    int c=(a>b,a=b+10,a,b=a+1);

    cout<<c;
}
//c=3

7.下标访问操作符 [ ] 、函数调用()

7.1下标访问操作符 [ ]

操作数是:arr、4

int main()
{
    int arr[10] = {1,2,3,4,5};

    int m = arr[4]; //数组中下标是4的元素
    //操作数是:arr,4
}

7.2函数调用()

函数调用操作符最少有1个操作数,即函数名。

int Add(int x,int y)
{
    return x+y;
}

int main()
{
    int ret=Add(3,5);
 //操作数:Add,3,5
}

8.结构成员访问操作符

8.1结构体

结构是一些值的集合,这些值成为成员变量。结构的每个成员可以是不同类型的变量,如:标量,数组,指针,甚至是结构体。

描述一个学生需要名字,年龄,学号,班级等等。

8.1.1结构的声明

格式:

struct tag //结构体名
{
    
     成员列表;

}变量名;

结构体初始化: 

学生类型声明
struct Student
{
   //成员变量
    char name[20];
    int age;
    float score;
}s4,s5;//变量列表

struct Student s3;//全局变量

int main()
{
    
    struct Student s1;//局部变量
    struct Student s2 = {"旺财",18,90.6};//赋值
}

结构体嵌套与初始化:

依次初始化赋值。

//坐标结构体
struct Point
{
    int x;
    int y;
}p1;

struct S
{
    char ch;
    struct Point p;//嵌套
    int arr[10];
    double d;
};

int main()
{

//初始化
    struct Point p = {10,20};
    struct S s={'a',{4,5},{1,2,3,4,5,6,7},3.14};
}

8.2结构体成员直接访问

结构体变量 . 结构体成员名

如上例:访问坐标:p.x ;s.p.x(嵌套结构体访问形式)。

9.操作符的属性:优先级、结合性

c语言操作符有两个重要属性:优先级和结合性,决定了表达式求值的计算顺序。

优先级指的是,如果一个表达式包含多个运算符,哪个运算符应该先执行。

(详见书本)。

主要如下:

  • 圆括号()
  • 自增自减 ++,--
  • 单目运算符 +  -
  • 乘法除法 *  / 
  • 关系运算符  <  >  ==等
  • 赋值运算符 =

相邻操作符优先级相同的情况下,结合性说了算。

10.表达式求值

10.1整型求值

C语言中整形算术运算总是至少以缺省值整型类型的精度来进行的。为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换叫做整型提升。

整型提升意义:

表达式的整形运算要在cpu的相应运算器内执行,cpu内整型运算器ALU的操作数的字节长度一般就是int的字节长度,同时也是CPU的通用寄存器的长度。

因此,即使两个char型相加,在CPU执行时实际上也要先转化为CPU内整形操作数的标准长度。

通用CPU是难以直接实现两个8bit字节直接相加运算,所以表达式中各种长度可能小于int长度的整型值,都必须先转化为int或者unsigned int 才能送入CPU执行运算。

 char a,b,c;

...

a = b + c;

b和c的值被提升为普通整型,然后再执行加法运算。加法运算完成之后,结果将被截断,然后再存储在a中。

如何进行整型提升?

  1. 有符号整数提升是按照变量的数据类型的符号来提升的
  2. 无符号整数提升,高位补0
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值