当前位置:首页 » 编程语言 » c语言算术的优先级别
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言算术的优先级别

发布时间: 2022-09-21 06:44:46

A. c语言的运算符的优先级是什么

1、最高级:出现同级别运算符时的结合方向是从左往右(下面级别没写结合顺序时,默认是从左往右)。

( )圆括号

[ ]下标运算符号

->指向结构体成员运算符

.结构体成员运算符

B. c语言运算优先级

优先级就是当表达式中有多个运算符时,先计算谁,后计算谁。打个比方,在四则运算中乘除的优先级就高于加减。

但是C语言中的运算符除了加减乘除还有很多,我们也没必要将所有运算符的优先级都记住,这里列出来各个运算符的优先级表,实在需要用到的时候查一下表就行了。而且实际上在编程的时候需要考虑优先级的情况很少,因为如果不知道优先级高低的话,加一个括号就行了,因为括号的优先级是最高的。

比如:

k = (j > i) && (8 == i)
根据优先级的高低,完全可以写成:

k = j > i && 8 == i
第一种写法是比较提倡的,因为一看就知道先计算谁后计算谁,节省了大家的时间还不容易出错。而且加圆括号也是一种编程规范,因为程序不只是写给自己看。

此外运算符还有“目”和“结合性”的概念。“目”就是眼睛的意思,一个运算符需要几个数参与就归为“几目”。C语言中大多数运算符都是双目的,比如 和 运算符;也有单目和三目的,单目运算符如逻辑非 ( !1 );三目运算符即条件运算符,?:也是C语言中的唯一一个三目运算符。

说完了“目”的概念,再来说一说“结合性”。先来煮个栗子:

1 + 2 × 3 / 4
上式中乘法和除法的优先级相同,但计算的时候是从左往右,所以乘和除的结合性就是从左往右,so easy!

C语言中大多数运算符的结合性都是从左往右,只有三个运算符是从右往左的。一个是单目运算符,另一个是三目运算符,还有一个就是双目运算符中的赋值运算符 。运算符的“结合性”也不需要死记硬背,在不断使用中就记住了。

C. c语言中运算符有哪几种,优先级顺序是怎样

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

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

一级运算符:标识,常量,字符串文字量,优先级提升表达式最优先执行。

二级运算符:数组下标运算(expression)、函数调用(argument-expression-list)、成员访问(identifier、-> identifier)、后缀自增(i++)、后缀自减(i--)、复合初始化(initializer-list)。

三级运算符:前缀自增(++i)、前缀自减(--i)、单目转型表式式(取地址& ,提领 * , 正号+ ,负号-、位反~ 逻辑否!)、求类型长度(sizeof unary-expression)。

四级运算符:强制表达式成为type-name指定的类型( type-name ) cast-expression。

五级运算符:“ * ” 乘法运算符。

六级运算符:“ + ”加法运算符。

七级运算符:<< 左移运算符;>> 右移运算符。

八级运算符:<、<=、>、>=关系运算符。

九级运算符:“ == ”等于运算符;“ != ”不等于运算符。

十级运算符:“ & ”按位与运算符。

十一级运算符:“ ∧ ”按位异或运算符。

十二级运算符:“ | ”按位或运算符。

十三级运算符:“&&”逻辑与运算符。

十四级运算符:“ || ”逻辑或运算符。

十五级运算符:? :条件运算符。

(3)c语言算术的优先级别扩展阅读

C语言中各运算符的结合性:

1、左结合性(自左至右):

例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z 则y 应先与“-”号结合,执行x-y 运算,然后再执行+z 的运算。这种自左至右的结合方向就称为“左结合性”。

2、右结合性(自右至左)

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

D. c语言算术运算符优先级

LS的说的对。1楼和2楼的说法不敢苟同。

双目是两个两个操作数的运算符号,而不是是两个符号比如++,单目是一个操作数的运算符,所以同理3目的运算符号是:?(条件表达式)。其他的我持保留态度,%,
+,
-,
*,
/等注意都是双目运算还包括大部分移位和逻辑运算的符号,单目的运算还包括++,
--,
&(注意这个是取地址),*(这个是间接寻址),!(非运算),两张图都或多或少有错误,建议你记忆优先级的时候记住乘除的优先级比+-高,括号的优先级最高就是了,需要优先计算的地方加括号即可。

还有顺便说句,请不要为了一点分忽悠初学者好么?

E. C语言运算符优先级顺序

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

(5)c语言算术的优先级别扩展阅读

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

a - b * c

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

(a - b) * c

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

F. C语言运算符优先级

C语言运算符优先级?
int m=1,n=1,a=1,b=1,c=1;(m=a>b)&&(n=a>b);
printf("%d%d",m,n);//0;1but,Why?
这是因为a>b不成立, m的值为0,而后面的是&&运算,所以不再计算,而n的值仍为1
======
m---m;_______这是不能通过编译的。
若是int m=3;
m=--m; //m先自减,然后赋值给m,即m=2
printf("%d",m);// 2 but,Why?

G. c语言中的运算符优先级高低是什么意思

运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符则是“+”。

运算符的优先级是从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。


(7)c语言算术的优先级别扩展阅读

优先级与求值顺序无关。如a+b && b*c,虽然*优先级最高,但这个表达式求值顺序是从左到右。

优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。

相同优先级中,按结合性进行结合。大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。

指针最优,单目运算优于双目运算。如正负号。先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 & 7等价于 (1 << (3 + 2))&7。逻辑运算最后结合。

H. C语言中30多个运算符的优先级顺序

32多个运算符的优先级顺序如下

1、auto

声明自动变量

2、short

声明短整型变量或函数

3、int

声明整型变量或函数

4、long

声明长整型变量或函数

5、float

声明浮点型变量或函数

6、double

声明双精度变量或函数

7、char

声明字符型变量或函数

8、struct

声明结构体变量或函数

9、union

声明共用数据类型

10、enum

声明枚举类型

11、typedef

用以给数据类型取别名

12、const

声明只读变量

13、unsigned

声明无符号类型变量或函数

14、signed

声明有符号类型变量或函数

15、extern

声明变量是在其他文件正声明

16、register

声明寄存器变量

17、static

声明静态变量

18、volatile

说明变量在程序执行中可被隐含地改变

19、void

声明函数无返回值或无参数,声明无类型指针

20、if

条件语句

21、else

条件语句否定分支(与 if 连用)

22、switch

用于开关语句

23、case

开关语句分支

24、for

一种循环语句

25、do

循环语句的循环体

26、while

循环语句的循环条件

27、goto

无条件跳转语句

28、continue

结束当前循环,开始下一轮循环

29、break

跳出当前循环

30、default

开关语句中的“其他”分支

31、sizeof

计算数据类型长度

32、return

子程序返回语句(可以带参数,也可不带参数)循环条件

(8)c语言算术的优先级别扩展阅读

1、==和!=优先级相等,其他四个关系运算符的优先级相等,且前者的优先级低于后者。

如2==3>1 应该先计算3>1。

2、关系运算符中,若优先级相同,则“从左往右”结合。

如4>3<2,先计算4>3

3、关系运算符中的优先级小于算术运算符。

如3+4>8-2 相当于(3+4)> (8-2)

I. C语言算数与逻辑运算符的优先级

运算有优先级,正如加减混合运算中的先乘除、后加减。如:
3+8×2=3+16=19
而不能:3+8×2=11×2=22
数学上用到的运算有三种:
一种是“数学运算”(+-×÷乘方开方对数三角函数等),它们的优先级最高;
一种是“关系运算”(>≥==≤<=≠等),它们的优先级低于数学运算。
如:3+6>5×2,相当于(3+6)>(5×2),9>10,结果是:不成立(假)。
而不能:3+6>5×2,3+1×2,3+3,结果是6。
一种是逻辑运算(与&&或丨丨非!等),它们的运算优先级比关系运算还要低。比如:
13>2*5&&10!=5+4
相当于(13>2*5)&&(10!=5+4)
(13>10)&&(10!=9)
1&&1
1
而且,这些运算顺序(优先级)跟数学上的顺序是一致的。

J. 运算符优先级由高到低的顺序是什么

c语言运算符优先级从高到低的顺序依次如下:



优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。

优先级与求值顺序无关。如a+b && b*c,虽然*优先级最高,但这个表达式求值顺序是从左到右。

优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。

相同优先级中,按结合性进行结合。大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。

序列点

序列点是程序执行中的一个点,在这个点之前,前面的表达式的求值和副作用已经完成,而后面表达式的求值和副作用还没有发生。C 标准定义以下序列点:

(1)运算符&&;运算符||;逗号运算符,;条件运算符?:的第一个子表达式求值结束后。

(2)函数调用运算符()中对所有实参数完成求值之后。

(3)每个完整表达式结束时。完整表达式包括变量初始化表达式,表达式语句的表达式,return 语句的表达式,if 或 switch 语句中的控制表达式,while 或 do语句的控制表达式,for 语句的所有三个表达式。

(4)标准库函数返回之前,标准输入输出函数格式化转换说明符关联动作之后,标准查找函数和排序函数在调用比较函数之前和之后及参数传递之后。

由序列点的定义可知,与运算符&&;或运算符||;逗号运算符,;条件运算符?:等 4 个运算符的左操作数属于前一个序列点,右操作数属于后一个序列点,因此,这 4 个运算符的左操作数的求值要先于右操作数完成。