在C语言中,逗号运算符的优先级最低对吗
对,在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语言运算符
是的,逗号运算符低于赋值运算符。
在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;};
参考资料:百度百科-运算符优先级
对的,逗号操作符具有最低的优先级。
所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符,其它的都是从左至右结合。具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。
()是与函数相关,[]与数组相关,而->及.是取结构成员,其次是单目运算符,所有的单目运算符具有相同的优先级,因此在真正的运算符中它们具有最高的优先级。
扩展资料:
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
是的,逗号操作符具有最低的优先级。所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左至右结合。
具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。()是与函数相关,[]与数组相关,而->及.是取结构成员。
其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的真正的运算符中它们具有最高的优先级。
运算符:
1、圆括号、方括号、指针、成员、逻辑非、自加、自减
2、单目运算符、sizeof、(cast)、算术运算符、位运算符、关系运算符 、条件运算符、赋值运算符 、 顺序运算符 。
扩展资料
比较特别的是,比特右移(>>)运算符可以是算术(左端补最高有效位)或是逻辑(左端补 0)位移。例如,将 11100011 右移 3 比特,算术右移后成为 11111100,逻辑右移则为 00011100。因算术比特右移较适于处理带负号整数,所以几乎所有的编译器都是算术比特右移。
运算符的优先级从高到低大致是:单目运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符(=)和逗号运算符。
参考资料来源:百度百科-c语言中的运算符号
1 () [] . ->
2 ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof
3 * / %
4 + -
5 >> <<
6 > >= < <=
7 == !=
8 &
9 ^
10 |
11 &&
12 ||
13 ?:
14 = += -= *= /= %= |= ^= &= >>= <<=
15 ,
就着多吧 结合性:2 13 14 是从右至左 其他都是 从左至右
括号成员第一; //括号运算符[]() 成员运算符. ->
全体单目第二; //所有的单目运算符比如++、 --、 +(正)、 -(负) 、指针运算*、&乘除余三,加减四; //这个"余"是指取余运算即%
移位五,关系六; //移位运算符:<< >> ,关系:> < >= <= 等
等于(与)不等排第七; //即== 和!=
位与异或和位或; //这几个都是位运算: 位与(&)异或(^)位或(|)
"三分天下"八九十;
逻辑或跟与; //逻辑运算符:|| 和 &&
十二和十一; //注意顺序:优先级(||) 底于 优先级(&&)
条件高于赋值, //三目运算符优先级排到13 位只比赋值运算符和","高
逗号运算级最低! //逗号运算符优先级最低