在C语言中,逗号运算符的优先级最低对吗

 我来答
小耳朵爱聊车
高粉答主

推荐于2019-08-17 · 说的都是干货,快来关注
知道大有可为答主
回答量:7378
采纳率:100%
帮助的人:293万
展开全部

对,在C程序中,逗号运算符的优先级最低。

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

结合性:C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。

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

而自右至左的结合方向称为“右结合性”。最典型的右结合 性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z 再执行x=(y=z)运算。

C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。

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

扩展资料:

C语言运算符号的种类

1、算术运算符

用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--)共七种。

2、关系运算符

用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=)六种。

3、逻辑运算符

用于逻辑运算。包括与(&&)、或(||)、非(!)三种。

4、位操作运算符

参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)六种。

5、赋值运算符

用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,^=,>>=,<<=)三类共十一种。

6、条件运算符

这是一个三目运算符,用于条件求值(?:)。

7、逗号运算符

用于把若干表达式组合成一个表达式(,)。

8、指针运算符

用于取内容(*)和取地址(&)二种运算。

9、求字节数运算符

用于计算数据类型所占的字节数(sizeof)。

10、特殊运算符

有括号(),下标[],成员(→,.)等几种。

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

综合小帮
推荐于2019-11-14 · 专注生活各种问题,热爱生活,热爱自然
综合小帮
采纳数:218 获赞数:3038

向TA提问 私信TA
展开全部

是的,逗号运算符低于赋值运算符。

在C语言中,逗号运算符的为了把几个表达式串在一起。整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值。

最右边的那个表达式的值将作为整个逗号表达式的值,其他表达式的值会被丢弃。

例如:var = (count=12, incr=10, count+1);

在这里,首先把 count 赋值为12,把incr赋值为10,然后把count加1。最后,把最右边表达式 count+1的计算结果13,赋给var。上面表达式中的括号是必需的,因为逗号运算符的优先级低于赋值操作符。

扩展资料

写一段C语言程序,j最初的值为10,然后自增到11,接着再加上100 并将结果赋值给 j,最后 j 再加上999,得出结果1110。

程序代码如下:

#include <iostream>using namespace std;

int main()

{int i, j;j = 10; i = (j++,j+=100,  999+j);   // i = 10+1+100+999cout << i; return 0;};

参考资料:百度百科-运算符优先级

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大野瘦子
高粉答主

推荐于2019-08-02 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:32.3万
展开全部

对的,逗号操作符具有最低的优先级。

所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符,其它的都是从左至右结合。具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。

()是与函数相关,[]与数组相关,而->及.是取结构成员,其次是单目运算符,所有的单目运算符具有相同的优先级,因此在真正的运算符中它们具有最高的优先级。

扩展资料:

C语言运算符的优先级

一、从上往下  运算符优先级依次降低

1、括号以及  .(结构体变量运用成员运算符)   ->(结构体指针引用成员运算符)2.单目运算符: !   ~  ++  --  &(取地址符)   *(取内容)   sizeof() 

2、单目运算符: !   ~  ++  --  &(取地址符)   *(取内容)   sizeof() 

3、算数运算符: 

*   /   %

+   -

4、位运算符: <<   >>

5、关系运算符: 

>=  >   <  <=

==       !=

6、位运算符:&  ^  |

7、逻辑运算符: &&  ||

8、条件运算符: ?:

9、(复合)赋值运算符: =   +=   -=  ....

10、逗号运算符: ,

二、左结合(从右向左运算):(复合)赋值运算符、逻辑非、取反(~ )、前置自增减运算符

右结合(从左向右运算)

注意逗号运算符的用法:

带有括号的表达式,先从表达式1开始计算,依次类推,最终表达式n的值是整个表达式的值。

不带有括号的表达式,从表达式1开始计算,依次类推:

int a,b;

int c = (a = 10,b = 30, a= a+b,b = a+b);//  c = 70

b = a = 10,b = 30, a= a+b;//  b = 30

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
休闲娱乐助手之星M
推荐于2019-10-06 · TA获得超过53.8万个赞
知道大有可为答主
回答量:2857
采纳率:100%
帮助的人:108万
展开全部

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

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

其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的真正的运算符中它们具有最高的优先级。

运算符:

1、圆括号、方括号、指针、成员、逻辑非、自加、自减    

2、单目运算符、sizeof、(cast)、算术运算符、位运算符、关系运算符 、条件运算符、赋值运算符 、 顺序运算符  。  

扩展资料

比较特别的是,比特右移(>>)运算符可以是算术(左端补最高有效位)或是逻辑(左端补 0)位移。例如,将 11100011 右移 3 比特,算术右移后成为 11111100,逻辑右移则为 00011100。因算术比特右移较适于处理带负号整数,所以几乎所有的编译器都是算术比特右移。

运算符的优先级从高到低大致是:单目运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符(=)和逗号运算符。

参考资料来源:百度百科-c语言中的运算符号

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3d8d4fb
推荐于2017-09-28 · TA获得超过111个赞
知道答主
回答量:42
采纳率:0%
帮助的人:6.6万
展开全部
一共有十五个优先级:
1 () [] . ->
2 ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof
3 * / %
4 + -
5 >> <<
6 > >= < <=
7 == !=
8 &
9 ^
10 |
11 &&
12 ||
13 ?:
14 = += -= *= /= %= |= ^= &= >>= <<=
15 ,
就着多吧 结合性:2 13 14 是从右至左 其他都是 从左至右

括号成员第一; //括号运算符[]() 成员运算符. ->
全体单目第二; //所有的单目运算符比如++、 --、 +(正)、 -(负) 、指针运算*、&乘除余三,加减四; //这个"余"是指取余运算即%
移位五,关系六; //移位运算符:<< >> ,关系:> < >= <= 等
等于(与)不等排第七; //即== 和!=
位与异或和位或; //这几个都是位运算: 位与(&)异或(^)位或(|)
"三分天下"八九十;
逻辑或跟与; //逻辑运算符:|| 和 &&
十二和十一; //注意顺序:优先级(||) 底于 优先级(&&)
条件高于赋值, //三目运算符优先级排到13 位只比赋值运算符和","高
逗号运算级最低! //逗号运算符优先级最低
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式