您当前的位置:首页 > 互联网教程

C语言运算符括号里面和外面有什么区别吗

发布时间:2025-05-18 12:42:09    发布人:远客网络

C语言运算符括号里面和外面有什么区别吗

一、C语言运算符括号里面和外面有什么区别吗

1、C语言运算符,括号里面(---x)表示x的值减去1,相当于“x”变为“x-1”,括号外面“!”表示取反(非0数变为0,0变为1)。

2、除了常见的三大类,算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符,比如位运算符。

3、优先级,C语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。

4、结合性:C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z则y应先与“-”号结合,执行x-y运算,然后再执行+z的运算。这种自左至右的结合方向就称为“左结合性”。

5、而自右至左的结合方向称为“右结合性”。最典型的右结合性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z再执行x=(y=z)运算。C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。

6、优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左至右结合。

7、具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。()是与函数相关,[]与数组相关,而->及.是取结构成员。

8、其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的真正的运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等效是毫无疑问的。

9、另外在C语言里,没有前置后置之分,因为++--是右结合所以右侧优先运算,表现为"操作数后置优先级比较高"的假象,前置和后置的区分是因为运算符重载而后加入C++的

10、接下来是算术运算符,*、/、%的优先级当然比+、-高了。

11、参考资料来源:百度百科-C语言运算符

二、c语言中的括号表达式

1、括号表达式计算顺序是从左到右,然后整个表达式返回的是最右边表达式的值,如第一个表达式,先算最内层的括号表达式的最左边的值,再把其最右边的值返回并赋值给b,所以b在此次运算之后变为3,之后b+2=5(但5只是一个临时值,b值还是3),之后15+b=18,并且这个值由于是最右的表达式会作为整个大括号表达式的返回值,即b再一次被赋值为18,然后现计算b+=18得到36;

2、如此第二个就是-30吧,对了,赋值表达式是从右到左赋值的

三、C语言运算符的优先级顺序是什么

c语言运算符的优先级顺序:括号运算符、一元运算符、算术运算符、移位运算符、关系运算符。

括号运算符具有最高的优先级,它可以改变其他运算符的优先级顺序。使用括号可以明确表达式的计算顺序。

一元运算符包括正号+、负号-、递增运算符++、递减运算符--、取地址运算符&、取值运算符*等。一元运算符优先级高于二元运算符,并且从右到左结合。

算术运算符包括加法+、减法-、乘法*、除法/和取模%等。算术运算符的优先级按照数学的运算规则进行计算,乘法、除法和取模的优先级高于加法和减法。

移位运算符包括左移<<和右移>>。移位运算符的优先级低于算术运算符。

关系运算符用于比较两个表达式的值,包括等于==、不等于!=、大于>、小于<、大于等于>=和小于等于<=。关系运算符的优先级低于算术运算符和移位运算符。