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

C语言中单目运算符,结合性从左到右,分别是什么意思

发布时间:2025-05-15 07:33:23    发布人:远客网络

C语言中单目运算符,结合性从左到右,分别是什么意思

一、C语言中单目运算符,结合性从左到右,分别是什么意思

1、单目运算符:只有一个操作数的运算符,如负号。对应的有双目运算符(即需要两个操作数,如除号/,大多为双目)和三目运算符(唯一一个为?表达式)

2、结合性:是指当一个操作数左右各有一个运算符时,按运算符优先级决定运算次序,当优先级相同时,按结合性决定运算次序。

二、c语言中,优先级由高到低的顺序有哪些

(取反、左移、按位与、按位异或、按位或)优先级由高到低的顺序排列为取反>左移>按位与>按位异或>按位或。

1、~:意思是按位取反,类似于非(!)的关系,取它的反面。

2、<<:意思是左移,移动二进制的位。

3、&:意思是按位与,类似于与(&&)的关系,一假为假。

4、^:意思是按位异或,通俗地说就是相同为0,不同为1.

5、|:意思是按位或,类似于或(||)的关系,一真为真。

在标准C语言的文档里,取反、左移、按位与、按位异或、按位或都属于双目运算符。结合方向是“自左至右”,即:先左后右,也叫“左结合性”。除了左结合性外,C语言有三类运算符的结合方向是从右至左,也叫“右结合性”,即:单目运算符、条件运算符、以及赋值运算符。

着重强调一点,无论是左结合性,还是右结合性,是针对两个相邻的优先级相同的运行符而言(不是表达中的运算对象),运算符是决定左右的基准点,先以前面的运算符(即位置上处于左边的运算符)构造运算,就是左结合,反之,就是右结合。

三、C语言中同等级运算的先后顺序

1、同等级的运算符,先后顺序按结合性来进行。下面的代码有利于理解结合性。

2、上面的代码是先执行b=c呢?还是先执行a=b。如果按前者,a=结果为2,如果按后者,a的结果为1。所有的赋值符(包括复合赋值)都具有右结合性,就是在表达式中最右边的操作最先执行,然后从右到左依次执行。这样,c先赋值给b,然后b在赋值给a,最终a的值是2。

3、所有优先级相同的操作符,它们的结合性也相同。这是必须如此的,否则结合性依然无法消除歧义,如果在计算表达式的值时需要考虑结合性,那么最好把这个表达式一分为二或者使用括号。

4、=是右结合的,所以先计算(b+c+d),然后再赋值给a

5、+是左结合的,所以先计算(b+c),然后再计算(b+c)+d

6、在C语言中有少数运算符在C语言标准中是有规定表达式求值的顺序的:

7、规定从左到右求值,并且在能确定整个表达式的值的时候就会停止,也就是常说的短路。

8、2:条件表达式的求值顺序是这样规定的:

9、条件测试部分test非零,表达式exp1被求值,否则表达式exp2被求值,并且保证exp1和exp2两者之中只有一个被求值。

10、3:逗号运算符的求值顺序是从左到右顺序求值,并且整个表达式的值等于最后一个表达式的值,注意逗号','还可以作为函数参数的分隔符,变量定义的分隔符等,这时候表达式的求值顺序是没有规定的!