0
点赞
收藏
分享

微信扫一扫

c语言运算符的总结

表达式的求值与运算符的优先级和结核性有关。

<1>运算符c语言运算符的总结_运算符

2.其运算符从高到低的顺序为(我写的了解也是这个顺序写的)

(1)数组下标,函数调用,结构成员操作符

(2)单目运算符

(3)算数运算符(有两个优先级)

(4)移位操作符

(5)关系操作符(有两个优先级)

(6)位操作(有三个优先级)

(7)逻辑操作符(有两个优先级)

(8)条件操作符

(9)赋值操作符

(10)逗号操作符

3.操作符的相关用法

(1)数组下标,函数调用,结构成员操作符

如int a[10]={0};而其中的a[7]的[  ]就是一个​数组下标运算符

int a=get_max(a,b);其中的()就是一个​函数调用操作符

这个结构体成员操作符有两个,需先定义个结构体(下面是在已定义结构体情况)

1.结构体.成员

2.先创建一个结构体.成员名 ------》​先用一个结构体指针​(struct 结构体* 自己定义的地址名=结构体)储存地址----》再   ​结构体指针->成员名  或者 (解引用操作成员).成员名字

如例子

#include

struct boy

{

int age;

int hight;

char name[20];

};

int main()

{

struct boy xiaoming = {10,167,"小明"};

struct boy* xiaomingdj = &xiaoming;

printf("%d\n", xiaoming.hight);//167

printf("%d\n", (*xiaomingdj).age);//10

printf("%s\n", xiaomingdj->name);//小明

return 0;

}

(2)单目运算符(10个)

-负值       +正值

&取地址操作符    *解引用操作符

{

int a=10;

int* p=&a;这个&是取地址操作符;

*p这个的*是解应用操作符

++前置加     后置加         ——前置减      后置减

}

 !逻辑反操作

(类型)强制运算符

~对一个数按位取反(这个是先转化为二进制,记得是补码)

sizeof计算所占内存的大小    测数组则sizeof(int[10])这是40,而且传参是以地址形式传参看编译器是64or32位

(3)算数运算符号

(优先级高些)%  (取余)       *         /

(优先级低些)+      -

(4)移位操作符(也是二进制位移,这个不出现浮点型)

<<  int a=1;b=a<<2;结果b变成了4(这是算数左移动,可参考下面算数右移动)

 >>其移动的都是二进制位,并且为算数右移动:左边补原符号位,右边丢弃

(5)关系操作符

(优先级高些)>         <         >=            <=

(优先级低些)==          !=

(6)位操作(也是二进制)

&按位与(优先级最高)     int a=3&5即a=011&101>a=001则a为1

^按位异或 (优先级居中)  int a=3^5即a=011^101>a=110则a为6

|按位或   (优先级最后)   int a=3|5即a=011|101>a=111则a为7

(7)逻辑操作符(其具有短路现象)

&&逻辑与(优先级高些)【如果a&&b,a为假则b不进行计算】

||逻辑或(优先级低些)【如果a||b,a为真则b不进行计算】

(8)条件运算符

判断1?a:b;//(如果1为真则执行a,否则执行b)

(9)赋值运算符

有赋值运算符=

和复合赋值号,有+=,-=,*=,/=,%=,>>=,<<=,&=,|=,^=;

(10)逗号运算符

其为用逗号隔开的多个表达式,从左向右执行,整个表达式的​结果为最后一个表达式​结果如int a=(b=b+c,b+c);则a=b+2*c

//好了这就是我对c语言运算符号的总结,希望这对你有所帮助

举报

相关推荐

0 条评论