C语言中逗号运算符怎么用?

例如:
main()
{int a,s,d;
s=2;
d=3;
a=12+(s+2,d+4);
}

一、用法:

1、当顺序点用,结合顺序是从左至右,用来顺序求值,完毕之后整个表达式的值是最后一个表达式的值。

main()

{int a,s,d;

s=2;

d=3;

a=12+(s+2,d+4);

}

先算括号内的值:s+2=4,d+4=7;括号内应为(4,7),括号内取值只取最后一个,如果没有括号则取第一个;a=12+7=19。

x=(y=3,(z = ++y+2) +5);

是首先把y赋值为3,把y递增为4,然后把4加上2,把结果6赋值给z,接下来把z加5最后把x赋为结果值11。

2、注意事项:逗号运算符( , )是C语言运算符中优先级最低的一种运算符。

二、其它用法:

1、在for里面的应用:

int i;int j;

for(i=0,j=0;i<5;i++,j++)

2、当分隔符:int i,j;

扩展资料

运算符优先级:

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

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

3、基本的优先级需要记住:指针最优,单目运算优于双目运算。如正负号。先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 && 7等价于 (1 << (3 + 2))&&7.逻辑运算最后计算。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-12

一、用法:

1、当顺序点用,结合顺序是从左至右,用来顺序求值,完毕之后整个表达式的值是最后一个表达式的值。

main()

{int a,s,d;

s=2;

d=3;

a=12+(s+2,d+4);

}

先算括号内的值:s+2=4,d+4=7;括号内应为(4,7),括号内取值只取最后一个,如果没有括号则取第一个;a=12+7=19。

x=(y=3,(z = ++y+2) +5);

是首先把y赋值为3,把y递增为4,然后把4加上2,把结果6赋值给z,接下来把z加5最后把

x赋为结果值11.

2、注意事项:逗号运算符( , )是C语言运算符中优先级最低的一种运算符

二、其它用法:

1、在for里面的应用:

int i;int j;

for(i=0,j=0;i<5;i++,j++)

2、当分隔符:int i,j;

扩展资料:

运算符优先级:

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

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

3、基本的优先级需要记住:指针最优,单目运算优于双目运算。如正负号。先算术运算,后移位运算,最后位运算。请特别注意:1 << 3 + 2 && 7等价于 (1 << (3 + 2))&&7.逻辑运算最后计算。

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

本回答被网友采纳
第2个回答  2018-12-07

在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。

具体用法:

假设b=2,c=7,d=5,   

a1=(++b,c--,d+3);   

a2=++b,c--,d+3;   

对于第一行代码,有三个表达式,用逗号分开,所以最终的值应该是最后一个表达式的值,也就是d+3,为8,所以a1=8。

对于第二行代码,那么也是有三个表达式,这时的三个表达式为a2=++b、c--、d+3,(这是因为赋值运算符比逗号运算符优先级高),所以最终表达式的值虽然为d+3,为8,但a2=3。   

注意:逗号运算的结合性是从左至右,完毕之后整个表达式的值是最后一个表达式的值。

假设:int a[],x=2,y=5;          

(1)a[1]=(x+3,y++,x++);那么最终结果是:a[1]=2 x=3 y=6; )

(2)a[2]=(x++,x+3,x+7);那么最终结果是:a[2]=10 x=4;

扩展资料:

1、逗号运算符,它将两个及其以上的式子联接起来叫都好表达式。逗号表达式的一般形式可以扩展为:

表达式1, 表达式2, 表达式3, …, 表达式n

它的值为表达式n的值。

2、逗号运算符是所有运算符中级别最低的。因此,下面两个表达式的作用是不同的:

x=(a=3, 6*3)

x=a=3, 6*a

逗号表达式无非是把若干个表达式“串联”起来。在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值,逗号表达式最常用于循环语句(for语句)中。

3、在用cout输出一个逗号表达式的值时,要将该逗号表达式用括号括起来,如:

cout<<(3*5, 43-6*5, 67/3)<<endl;

参考资料:百度百科—逗号运算符

本回答被网友采纳
第3个回答  2007-04-16
C语言提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如:

3+5,6+8

称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为

表达式1,表达式2

逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5,6+8”的值为14。又如,逗号表达式
a=3*5,a*4
对此表达式的求解,读者可能会有两种不同的理解:一种认为“3*5,a*4” 是一个逗号表达式,先求出此逗号表达式的值, 如果a的原值为3,则逗号表达式的值为12,将12赋给a, 因此最后a的值为12。另一种认为:“a=3*5”是一个赋值表达式”,“a*4”是另一个表达式,二者用逗号相连,构成一个逗号表达式。这两者哪一个对呢?赋值运算符的优先级别高于逗号运算符, 因此应先求解a=3*5(也就是把“a=3*5”作为一个表达式)。经计算和赋值后得到a的值为15,然后求解a*4,得60。整个逗号表达式的值为60。
一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如(a=3*5,a*4),a+5 先计算出a的值等于15,再进行a*4的运算得60(但a值未变,仍为15),再进行a+5得20,即整个表达式的值为20。
逗号表达式的一般形式可以扩展为

表达式1,表达式2,表达式3……表达式n

它的值为表达式n的值。

逗号运算符是所有运算符中级别最低的。因此,下面两个表达式的作用是不同的:

① x=(a=3,6*3)
② x=a=3,6*a

第①个是一个赋值表达式,将一个逗号表达式的值赋给x,x的值等于18。第②个是逗号表达式,它包括一个赋值表达式和一个算术表达式,x的值为3。

其实,逗号表达式无非是把若干个表达式“串联”起来。在许多情况下,使用逗号表达式的目的只是想分别得到各个表达式的值,而并非一定需要得到和使用整个逗号表达式的值,逗号表达式最常用于循环语句(for语句)中.

请注意并不是任何地方出现的逗号都是作为逗号运算符。例如函数参数也是用逗号来间隔的。如

printf("%d,%d,%d",a,b,c);

上一行中的“a,b,c”并不是一个逗号表达式,它是printf函数的3个参数,参数间用逗号间隔。
如果改写为

printf("%d,%d,%d",(a,b,c),b,c);

则“(a,b,c)”是一个逗号表达式,它的值等于c的值。括弧内的逗号不是参数间的分隔符而是逗号运算符。括弧中的内容是一个整体,作为printf函数的一个参数。
C语言表达能力强,其中一个重要方面就在于它的表达式类型丰富,运算符功能强,因而c使用灵活,适应性强。在后面几章中将会进一步看到这一点。
第4个回答  2015-05-17

逗号运算符( , )是C语言运算符中优先级最低的一种运算符,结合顺序是从左至右,用来顺序求值(最后一个逗号后面表达式的值作为整个表达式的值)。


下面举例说明逗号运算符的使用方法:

int a=3, b=5, c;
c = a>b, a+b;   // 运行后c值为0,因为逗号运算符的优先级低于赋值运算符,所以先将a>b的结果(为0)赋值给c,之后运算a+b(结果不保存),所以c=0

c = (a>b, a+b); // 运行后c值为8,因为括号的优先级高于赋值运算符,所以先算括号内的表达式,此时计算结果为最后一个表达式的值,即a+b的值,所以c=8

相似回答