问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-04-23 00:45

我来回答

5个回答

热心网友 时间:2022-05-31 15:38

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。

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

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

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

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

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

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

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

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

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

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

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

扩展资料

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

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

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

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

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

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

热心网友 时间:2022-05-31 15:38

C语言的运算符主要用于构成表达式,同一个符号在不同的表达式中,其作用并不一致。下面按计算的优先顺序,分别说明不同作用的表达式。需要特别指出,在C语言标准中,并没有结合性的说法。
相同优先级运算符,从左至右依次运算。注意后缀运算优先级高于前缀。因此++i++应解释为++(i++)。
而与或非的运算优先级都不一样,因此a && b || b && c解释为(a && b) || (b && c)
合理使用优先级可以极大简化表达式。

基本表达式 1级
基本表达式(Primary expressions),主要是用于运算符之间,做为运算数。
标识,常量,字符串文字量,优先级提升表达式最优先执行。
优先级提升表达式是指圆括号包围的表达式,如“( expression )”

后缀表达式 2极
postfix-expression [ expression ],数组下标运算。
postfix-expression ( argument-expression-list),函数调用,括号内的参数可选。
postfix-expression . identifier,成员访问,
postfix-expression -> identifier,成员访问,->号之前应为指针。
postfix-expression ++,后缀自增
postfix-expression --,后缀自减
( type-name ) { initializer-list }
( type-name ) { initializer-list , } 复合初始化,C99后新增。例如
int* a = (int[]) { 1, 2, 3 };
//等价于 int unamed[] = {1, 2, 3}; //unamed表示一个不可见的变量名。
int* a = unamed;

单目/一元运算 3级
++ unary-expression 前缀自增
-- unary-expression 前缀自减
unary-operator cast-expression 单目转型表式式, 包括 取地址& ,提领 * , 正号+ ,负号- 位反~ 逻辑否!。
sizeof unary-expression 求类型长度,对表达式求类型长度
sizeof ( type-name ) 求类型长度

强制类型表达式 4级
( type-name ) cast-expression,强制表达式成为type-name指定的类型。

乘法表达式 5级
“ * ” 乘法运算符;“ / ”除法运算符;“ % ” 取余运算符。

加法运算符 6级
“ + ”加法运算符;“ - ”减法运算符。

移位运算符 7级
<< 左移运算符;>> 右移运算符。

关系运算符 8级
<、<=、>、>=关系运算符。

相等运算符 9级
“ == ”等于运算符;“ != ”不等于运算符。

位与运算符 10级
“ & ”按位与运算符

位异或运算符 11级
“ ∧ ”按位异或运算符(Bitwise exclusive OR operator)。

位或运算符 12 级
“ | ”按位或运算符(Bitwise inclusive OR operator)。
  
逻辑与运算符 13级
“&&”逻辑与运算符。

逻辑或运算符 14 级
“ || ”逻辑或运算符。

三元条件运算符 15级
? :条件运算符。

赋值运算符 16 级
=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=赋值运算符。

逗号运算符 17级
“,”逗号运算符。
[pre]C 语言中,逗号(,)也可以是运算符,称为逗号运算符(Comma Operator)。逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式,称为逗号表达式。其一般形式为:
  子表达式1, 子表达式2, ..., 子表达式n
  例如:
  a + b, c = b, c++
  逗号运算符的优先级是所有运算符中级别最低的,通常配合 for 循环使用。逗号表达式最右边的子表达式的值即为逗号表达式的值。上例中,c++ 的值(c 自增之前的值)即为该表达式的值。
  逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算。因此,上例中,c 得到 b 的值后,才进行自增运算。

优先级:C语言中,运算符的运算优先级共分为15 级。1 级最高,15 级最低。 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定的结合方向处理。
结合性:C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z 则y 应先与“-”号结合,执行x-y 运算,然后再执行+z 的运算。这种自左至右的结合 方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。最典型的右结合 性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z 再执行x=(y=z)运算。C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。
优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左至右结合。
具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。()是与函数相关,[]与数组相关,而->及.是取结构成员。
其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的 真正的运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等效是毫无疑问的。
另外在C语言里,没有前置后置之分,因为++ -- 是右结合所以右侧优先运算,表现为 "操作数后置优先级比较高" 的假象,前置和后置的区分是因为运算符重载而后加入C++的
接下来是算术运算符,*、/、%的优先级当然比+、-高了。
移位运算符紧随其后。
其次的关系运算符中,< <= > >=要比 == !=高一个级别,不大好理解。
所有的逻辑操作符都具有不同的优先级(单目运算符除外,!和~)
逻辑位操作符的"与"比"或"高,而"异或"则在它们之间。
跟在其后的&&比||高。
接下来的是条件运算符,赋值运算符及逗号运算符。
在C语言中,只有4个运算符规定了运算方向,它们是&&、| |、条件运算符及赋值运算符。
&&、| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。如 a = 0 && b; &&运算符的左边位0,则右边表达式b就不再判断。
在条件运算符中。如a?b:c;先判断a的值,再根据a的值对b或c之中的一个进行求值。
赋值表达式则规定先对右边的表达式求值,因此使 a = b = c = 6;成为可能。

口诀注释
优先级等级口诀
圆方括号、箭头一句号, 自增自减非反负、针强地址长度,
乘除,加减,再移位,
小等大等、等等不等,
八位与,七位异,六位或,五与,四或,三疑,二赋,一真逗。
其中“,”号为一个等级分段。

优先级等级注释
“圆方括号、箭头一句号”指的是第15级的运算符。其中圆方括号很明显“()、[]”,箭头 指的是指向结构体成员运算符“->”,句号 指的是结构体成员运算符“.” ;
“自增自减非反负、针强地址长度”指的是第14级的运算符。其中 非 指的是逻辑运算符“!”,反 指的是按位取反运算符“~”,负 指的是负号运算符“-”,针 指的是指针运算符“*”,强 指的是强制类型转换运算符,地址 指的是地址运算符“&”,长度 指的是长度运算符“sizeof ”;
“乘除,加减,再移位”移位指的是左移运算符“<<”和右移运算符“>>”,其中除法还包括了 取余运算符“%”;
“小等大等、等等不等” 指的是第10级到第9级的运算符:<、<=、>和>=,等等指的是等于运算符==,不等指的是不等于运算符!=
“八位与,七位异,六位或”其中 八位与 指的是第8级的 按位与 运算符“&”,七位异 指的是第7级的按位异或运算符“^”,六位或 指的是第6级的按位或运算符“|”;
“五与,四或”指的是第5级、第4级的逻辑与运算符“&&”和逻辑或运算符“||”;
“三疑,二赋,一真逗”指的是第3级到第1级的运算符。其中,三疑指的是条件运算符“?:” (三有双重含义:即指优先级别是三,它的运算符类型也是三目,疑也取“?”之意),二赋 指的是赋值运算符=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=和|= ,一真逗 指的是第1级的“,”运算符,真字只是为了语句需要罢了。
由于C语言的运算符优先级与C++的不完全一样(主要是增加了几个运算符),所以这个口诀不能完全实用于C++.但是应该能够兼容,大家可以比较一下他们的区别应该就能够很快掌握C++的优先级的!

应用举例
1、赋值运算符:a=5;
a=b=0;
第一个赋值语句把5赋给变量a;第二个赋值语句的意思是把0同时赋值给两个变量。这是因为赋值语句是从右向左运算的,也就是说从右端开始计算,先b=0,然后a=b。
2、复合赋值运算符:a=1;a+=3;
上面第二个赋值语句等价于a=a+3;即a=4。
3、算术运算符:Area=Height*Width;num=num1+num2/num3-num4;
第一个赋值语句Height和Width相乘结果赋给变量Area;第二个赋值语句先完成num2与num3的整除运算,然后与num1相加,再减去num4,结果赋给num。运算符运算顺序先算乘除再算加减。单目正和单目负最先运算。
4、逻辑运算符:a=1,b=1;
a||b-1;
因为a=1为真值,所以不管b-1是不是真值,总的表达式一定为真值,这时后面的表达式就不会再计算了。
5、关系运算符:if(a>0)...
如果a>0,则执行if语句中的内容,否则退出。
6、条件运算符:a=(b>0)?b:-b;
当b>0时,a=b;当b不大于0时,a=-b;其实上面的意思就是把b的绝对值赋值给a。
7、逗号运算符:b=2,c=7,d=5;
a=(++b,c--,d+3);
有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是d+3=8,所以a=8。
8、位逻辑运算符
包括:1。&位与符 2。|位或符 3。^位异或符 4。~位取反符
  以操作数12为例。位运算符将数字12视为1100。位运算符将操作数视为位而不是数值。数值
  可以是任意进制的:十进制、八进制或十六进制。位运算符则将操作数转化为二进制,并相应地返回1或0。
  位运算符将数字视为二进制值,并按位进行相应运算,运算完成后再重新转换为数字。例如:
  表达式10&15表示(1010 & 1111),它将返回表示1010的值10。因为真真得真,或者是11得1,同位全是1结果也是1
  表达式10|15表示(1010 | 1111),它将返回表示1111的值15。假假得假。全零得零。
  表达式10^15表示(1010 ^ 1111), 它将返回表示0101的值5。此时是同性相斥,相同的就为假。
  表达式~10表示(~1010),它将返回表示0101的值 -11。此号好理解,按位取反。

热心网友 时间:2022-05-31 15:39

1、C语言的运算符有圆括号 单目运算符 算术运算符 关系运算符 逻辑运算符 三目运算符 赋值运算符  逗号运算符等,一共15个优先级。

2、详细的运算符优先等级可以参考下表:

在编程过程中,了解运算符的优先顺序非常重要。否则将得不到正确的结果。

热心网友 时间:2022-05-31 15:39

C语言的运算符包括单目运算符、双目运算符、三目运算符,优先级如下:
第1优先级:各种括号,如()、[]等、成员运算符 . ;
第2优先级:所有单目运算符,如++、--、!、~等;
第3优先级:乘法运算符*、除法运算符/、求余运算符%;
第4优先级:加法运算符+、减法运算符-;
第5优先级:移位运算符<<、>>;
第6优先级:大于运算符>、大于等于运算符>=、小于运算符<、小于等于运算符<=;
第7优先级:等于运算符==、不等于运算符!=;
第8优先级:按位与运算符&;
第9优先级:按位异或运算符^;
第10优先级:按位或运算符|;
第11优先级:逻辑与运算符&&;
第12优先级:逻辑或运算符||;
第13优先级:三目条件运算符 ?: ;
第14优先级:各种赋值运算符,如=、+=、-=、*=、/= 等;
第15优先级:逗号运算, 。

热心网友 时间:2022-05-31 15:40

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

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

一级运算符:标识,常量,字符串文字量,优先级提升表达式最优先执行。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
cpa改分电话可信吗 有人今年收到这样的短信吗? 温馨提示 通知:你此次报考的湖南中级会 ...会计从业资格证,今天有陌生号码打电话说我没过,是真的吗?我都考三... 坠入星河的温柔仙句 惊艳所有人的优美文案 坠入星河的温柔仙句 温柔很仙的宝藏文案 温柔到心坎里的文案句子(温柔且治愈的短句子) 实习期劳务合同简易版 ...企业受伤,如果辞职是否还有补偿?医疗费谁出? 毛晓彤十大经典电视剧 这个锦尚天舞舞蹈里面的音乐是什么?急求 http://m.iqiyi.com/w_19rr... 注册微博填昵称为什么有的显示该昵称不允许注册有的显示此昵称太受欢迎... 【思侬家纺】思侬家纺怎么样? 九阳火锅热敏电阻什么样 算术运算符的优先级顺序是()。 新浪微博:为什么刚刚发的微博别人看不到 乐瓜抱枕好不好? 初中女生怎样促进胸发育(要有效) 热敏电阻是什么样子的? 什么牌子的汽车抱枕好 kidding为什么是微博敏感词 c语言运算符优先级从高到低的顺序依次为? 热敏电阻芯片是这个样子吗? 家纺哪个品牌好? 创维电视机怎么恢复出厂设置? 新浪微博发微博时总是发不出去怎么回事?网络也正常! 这个热敏电阻的结构是什么样子的? 初中女生胸部的发育问题,担心啊··· 请问压敏电阻和热敏电阻怎么看,封装都是什么样的?怎么区分 午睡枕哪个牌子好?几款热门推荐 为什么微博改名要五天审核 热敏电阻的引线形状有哪些? 提供几款用锻子被面制作的抱枕 逻辑运算符中运算优先级从高到低依次为 电子体温计里的热敏电阻是什么样的啊? C语言的运算符的优先级是什么? pt100 热敏电阻长什么样的?? 关系运算符 算数运算符 赋值运算符 优先级 排个顺序! 手机热敏电阻是什么样的 在Excel 2010公式中,四类运算符的优先顺序是什么? 热敏电阻中引脚线的形状有哪几种啊? 热敏电阻组件是什么样的? 在excel中,其优先级运算符最低的是哪个 热敏电阻,在逆变焊机里的作用,在逆变焊机里的,是什么样子的热敏电阻。 excel公式中运算符的优先级规则是什么 这个时恒的PTC热敏电阻结构和形状有哪些? 玻封热敏电阻为何? 在Excel中,各运算符号的优先级由高到低顺序为()。 什么电器上能拆到热敏电阻?长啥样啊? C语言中“==” 和“&lt;” 哪个优先级更高? 热敏电阻的三种类型特点和应用范围