c语言优先级是什么?

Python021

c语言优先级是什么?,第1张

C语言的运算符包括单目运算符、双目运算符、三目运算符,优先级如下:

第1优先级:各种括号,如()、[]等、成员运算符

第2优先级:所有单目运算符,如++、–、!、~等。

第3优先级:乘法运算符*、除法运算符/、求余运算符%。

第4优先级:加法运算符+、减法运算符-。

第5优先级:移位运算符<<、>>。

第6优先级:大于运算符>、大于等于运算符>=、小于运算符<、小于等于运算符<=。

第7优先级:等于运算符==、不等于运算符!=。

第8优先级:按位与运算符&。

第9优先级:按位异或运算符^。

第10优先级:按位或运算符|。

第11优先级:逻辑与运算符&&。

第12优先级:逻辑或运算符||。

第13优先级:三目条件运算符?。

第14优先级:各种赋值运算符,如=、+=、-=、*=、/=等。

第15优先级:逗号运算。

c语言优先级是:每种同类型的运算符都有内部的运算符优先级,不同类型的运算符之间也有相应的优先级顺序。一个表达式中既可以包括相同类型的运算符,也可以包括不同类型的运算符或者函数。

当多种运算符出现在同一个表达式中时,应该先按照不同类型运算符间的优先级进行运算。

各种运算符间的优先级如下:数值运算符、字符串运算符、关系运算符、逻辑运算符。可以用括号改变优先级顺序,使得括号内的运算优先于括号外的运算。对于多重括号,总是由内到外强制表达式的某些部分优先运行。括号内的运算总是最优先计算。

优先级结合性:

当一个运算对象两侧的运算符优先级别相同时,则按运算符的结合性来确定表达式的运算顺序。关于结合性的概念在其他高级语言中是没有的,这是C语言的特点之一。在标准C语言的文档里,对操作符的结合性并没有做出非常清楚的解释。

C语言也将34种运算符规定了不同的结合性。大多数运算符结合方向是“自左至右”,即:先左后右,也叫“左结合性”

例如 a-b + c,表达式中有-和+两种运算符,且优先级相同,按先左后右结合方向,先围绕减号结合,执行a-b的运算,再围绕加号结合,完成运算(a-b) + c。除了左结合性外,C 语言有三类运算符的结合方向是从右至左,也叫“右结合性”。

C语言运算符优先级顺序如下所示:

自增运算符 ++ 和自减运算符 --,在作后缀运算符(如表达式 x++)时,较其用作前缀运算符(如表达式 ++x)时,具有较高的优先级。

+、-、* 和 &运算符记号不但可以当作一元运算符(unary operator,只需要一个操作数),也可以当作二元运算符(binary operator,需要两个操作数)。例如,* 只有一个操作数的时候,就是间接运算符(indirection operator),而有两个操作数的时候,就是乘号。

扩展资料

一个表达式可以包含多个运算符。在这种情况下,运算符的优先级决定表达式的哪部分被处理为每个运算符的操作数。例如,按照运算规则,表达式中 *、/、以及 % 的优先级比 + 和 - 高。如下列表达式:

a - b * c

相当于 a-(b*c)。如果想让操作数以不同的方式组合在一起,则必须使用括号:

(a - b) * c

如果一个表达式中的两个操作数具有相同的优先级,那么它们的结合律(associativity)决定它们的组合方式是从左到右或是从右到左。例如,算术运算符和操作数的组合方式是从左到右,赋值运算符则是从右到左。