C语言逗号运算符和逗号表达式

C语言逗号运算符和逗号表达式
[url]http://www.vichx.com/post/c-2-4-3.html[/url]

c语言中逗号运算符和逗号表达式
[url]http://blog.csdn.net/great_ghoul/archive/2007/09/10/1779768.aspx[/url]


[quote]
一、逗号运算符

在C语言中,逗号“,”的用法有两种:一种是用作分隔符,另一种是用作运算符。

在变量声明语句、函数调用语句等场合,逗号是作为分隔符使用的。

例如:

int a,b,c;

scanf('%f%f%f',&f1,&f2,&f3);

C语言还允许用逗号连接表达式。例如x=5.6,y=2.1,10+x,x+y这里用三个逗号运算符将四个算术表达式连接成一个逗号表达式。



二、逗号表达式

形式:表达式1,表达式2,表达式3,...,表达式n

例:

a=2*6,a-4,a+15;

当逗号作为运算符使用时是一个双目运算符,其运算优先级是所有运算符中最低的。逗号运算符的运算顺序是自左向右的,因此上述赋值语句的求值顺序为:先计算2*6并赋予a(结果是a=12),再计算a-4(只计算,不赋值),最后计算a+15(只计算,不赋值),最终以27作为整个逗号表达式的值。请注意,后面两个表达式的值仅作了计算,而并没有赋给a,所以a的值仍然为12。

有时候使用逗号表达式的目的仅仅是为了得到各个表达式的值,而并非要得到真个逗号表达式的值。

例:

t=a,a=b,b=t;

此逗号表达式的目的是实现变量a,b值互换,而不是使用整个表达式的值。

例:

由于逗号运算符的优先级最低,因此x=5+5,10+10与x=(5+5,10+10)的作用不同,前者是x被赋值为10,而整个逗号表达式的值为20;后者由于增加了一对括号 ,使10+10作为整个表达式的值并赋予变量x,因此x的值为20。

例:

逗号表达式(a=3*5,a*4),a+15 的运算顺序为:将3*5的结果15赋给变量a,再计算括号内的第二个表达式a*4的值,结果为60,该整数60虽然作为括号所构成的表达式的值,但是a的值仍然是15,因此最后计算a+15时,结果为30。

例:

int j=5;

a=(a=j+1,a+2,a+3);

该赋值语句的执行顺序为:先对a变量赋值6,再计算a+2得8,再计算a+3得9,最后将9作为整个逗号表达式的值付给变量a,使a重新赋值为9。如果将一对括号去掉,a的值为6。

例:

int x ,y;

y=(x=1,++x,x+2);

该赋值语句的执行顺序为:x被赋值为1,x自增1得2,再计算x+2得4,4作为整个逗号表达式的值付给变量y,因此y被赋值为4。
[/quote]
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值