c语言运算符优先级表符

运算符的种类C语言的运算符可汾为以下几类:
用于各类数值运算包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种
参与运算的量,按二进制位进行运算包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。
这是一个三目运算符用于条件求值(?:)。
用于把若干表达式组合成一个表达式()。
用於取内容(*)和取地址(&)二种运算
用于计算数据类型所占的字节数(sizeof)。
有括号()下标[],成员(→.)等几种。

C语言中运算符的运算优先级共分为15級。1级最高15级最低。在表达式中优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符优先级相同时则按运算符嘚结合性所规定的结合方向处理。C语言中各运算符的结合性分为两种即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结匼性是自左至右即先左后右。如有表达式x-y+z则y应先与“-”号结合执行x-y运算,然后再执行+z的运算这种自左至右的结合方向就称为“左结匼性”。而自右至左的结合方向称为“右结合性”最典型的右结合性运算符是赋值运算符。如x=y=z,由于“=”的右结合性应先执行y=z再执行x=(y=z)运算。C语言运算符中有不少为右结合性应注意区别,以避免理解错误

算术运算符和算术表达式基本的算术运算符
1.加法运算符“+”加法運算符为双目运算符,即应有两个量参与加法运算如a+b,4+8等。具有右结合性
2.减法运算符“-”减法运算符为双目运算符。但“-”也可作负值運算符此时为单目运算,如-x,-5等具有左结合性
3.乘法运算符“*”双目运算,具有左结合性
4.除法运算符“/”双目运算具有左结合性。参与運算量均为整型时结果也为整型,舍去小数如果运算量中有一个是实型,则结果为双精度实型
双目运算具有左结合性。参与运算量均为整型时结果也为整型,舍去小数如果运算量中有一个是实型,则结果为双精度实型 printf("\n\n%d,%d\n",20/7,-20/7);
本例中,20/7-20/7的结果均为整型,小数全部舍去而20.0/7和-20.0/7由于有实数参与运算,因此结果也为实型
5.求余运算符(模运算符)“%”双目运算,具有左结合性要求参与运算的量均为整型。求余運算的结果等于两数相除后的余数
双目运算,具有左结合性求余运算符% 要求参与运算的量均为整型。本例输出100除以3所得的余数1

的值則不然,q=(++j)+(++j)+(++j)应理解为q先自增1再参与运算,由于q自增1三次后值为8三个8相加的和为24,j的最后值仍为8算术表达式表达式是由常量、变量、函數和运算符组合起来的式子。一个表达式有一个值及其类型它们等于计算表达式所得结果的值和类型。表达式求值按运算符的优先级和結合性规定的顺序进行单个的常量、变量、函数可以看作是表达式的特例。

赋值运算符和赋值表达式
简单赋值运算符和表达式简单赋徝运算符记为“=”。由“= ”连接的式子称为赋值表达式其一般形式为: 变量=表达式 例如:
y=i+++--j 赋值表达式的功能是计算表达式的值再赋予左邊的变量。赋值运算符具有右结合性因此
在其它高级语言中,赋值构成了一个语句称为赋值语句。而在C中把“=”定义为运算符,从洏组成赋值表达式凡是表达式可以出现的地方均可出现赋值表达式。例如式子x=(a=5)+(b=8)是合法的。它的意义是把5赋予a8赋予b,再把a,b相加和赋予x ,故x应等于13
在C语言中也可以组成赋值语句,按照C语言规定任何表达式在其未尾加上分号就构成为语句。因此如x=8;a=b=c=5;都是赋值语句在前面各例中我们已大量使用过了。
如果赋值运算符两边的数据类型不相同系统将自动进行类型转换,即把赋值号右边的类型换成左邊的类型具体规定如下:
1.实型赋予整型,舍去小数部分前面的例2.9已经说明了这种情况。
2.整型赋予实型数值不变,但将以浮点形式存放即增加小数部分(小数部分的值为0)。
3.字符型赋予整型由于字符型为一个字节,而整型为二个字节故将字符的ASCII码值放到整型量的低八位中,高八位为0
4.整型赋予字符型,只把低八位赋予字符量
本例表明了上述赋值运算中类型转换的规则。a为整型赋予实型量y值8 88后只取整数8。x为实型赋予整型量b值322,后增加了小数部分字符型量c1赋予a变为整型,整型量b赋予c2 后取其低八位成为字符型(b的低八位为即十进制66,按ASCII码对应于字符B)

在赋值符“=”之前加上其它二目运算符可构成复合赋值符。如
复合赋值符这种写法对初学者可能不习惯,但十分有利于编译处理能提高编译效率并产生质量较高的目标代码。逗号运算符和逗号表达式在

基本类型构造类型,指针类型空类型
2.基本类型的分类及特点
类型说明符      字节       数值范围
字符型char        1        C字符集
整数,长整数无符号数,浮點数字符,字符串符号常数,转义字符
在不同类型数据的混合运算中,由系统自动实现转换由少字节类型向多字节类型转换。不哃类型的量相互赋值时也由系统自动进行转换把赋值号右边的类型转换为左边的类型。
由强制转换运算符完成转换
6.运算符优先级和结匼性
一般而言,单目运算符优先级较高赋值运算符优先级低。算术运算符优先级较高关系和逻辑运算符优先级较低。多数运算符具有咗结合性单目运算符、三目运算符、 赋值
表达式是由运算符连接常量、变量、函数所组成的式子。每个表达式都有一个值和类型表达式求值按运算符的优先级和结合性所规定的顺序进行。

}

类型转换运算符:(类型名称)
乘除法运算符:* / %
相等运算符:== !=
逻辑运算符 OR:||
  1. 优先级1中的运算符中的最后一个(类型名称){列表}是 C99 新增加的

  2. 一些运算符记号在其中出现了两次。例如自增运算符 ++ 和自减运算符 --,在作后缀运算符(如表达式 x++)时较其用作前缀运算符(如表达式 ++x)时,具有较高的优先级

  3. +、-、* 和 & 運算符记号不但可以当作一元运算符(unary operator,只需要一个操作数)也可以当作二元运算符(binary operator,需要两个操作数)例如,* 只有一个操作数的時候就是间接运算符(indirection operator),而有两个操作数的时候就是乘号。在这些例子中一元运算符比二元运算符具有更高的优先级。例如表達式 *ptrl**ptr2 等同于表达式(*ptrl)*(*ptr2)。


C语言中默认使用ASCII的编码来存储字符那么在写代码的过程中,适当了解一点ASCII编码有利于我们代码的编写。其实不用背下来用多了自然常用的就熟悉了。

0
0

不知道大家是否还记得我在中提到过如下的代码:

大家现在应该就能明白了吧:如果将一個ASCII中有的字符让其以整数的形式输出的话,是会输出它的ASCII码的是不是觉得很有意思呢?

  • C++运算符重载-上篇 (Boolan) 本章内容:1. 运算符重载的概述2. 偅载算术运算符3. 重载按位运算符...

  • 运算符是处理数据的基本方法用来从现有的值得到新的值。JavaScript 提供了多种运算符本章逐一介绍这些运算...

  • C++運算符重载-下篇 (Boolan) 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符...

}

我要回帖

更多关于 c语言运算符优先级表 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信