| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4270 人关注过本帖, 1 人收藏
标题:逗号表达式的作用??????
只看楼主 加入收藏
yang0401
Rank: 2
等 级:论坛游民
帖 子:84
专家分:57
注 册:2011-5-23
结帖率:69.23%
收藏(1)
已结贴  问题点数:30 回复次数:9 
逗号表达式的作用??????
a=(1,2,3,4,5,6)
结果为6,逗号表达式的值都为最后一个表达式的值,那我想我的是前面的表达式有什么用啊??当摆设吗??
搜索更多相关主题的帖子: 表达式 
2011-05-29 17:07
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
程序代码:
#include <stdio.h>
#define arrsize(array) (sizeof(array) / sizeof(*array))

int main(void) {
    int arr1[] = {0, 1, 2, 3, 4};
    int arr2[] = {5, 6, 7, 8, 9};
    int i, j;
    for(i = 0, j = 0; i < arrsize(arr1) && j < arrsize(arr2); i++, j++) {
        arr2[j] += arr1[i];
    }
    return 0;
}
你明白了吗?

收到的鲜花
  • yang04012011-05-30 20:25 送鲜花  1朵   附言:还是不懂哦,到是下面的看懂了

My life is brilliant
2011-05-29 17:16
Moonod
Rank: 2
来 自:河北-唐山
等 级:论坛游民
帖 子:29
专家分:42
注 册:2011-5-30
收藏
得分:10 
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使用灵活,适应性强
收到的鲜花
  • yang04012011-05-30 20:20 送鲜花  3朵   附言:一直没有明白现在终于懂了谢谢了
2011-05-30 15:44
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:0 
回复 3楼 Moonod
学习1!!!

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-05-30 15:52
键盘农夫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:106
注 册:2011-5-5
收藏
得分:10 
以下是引用yang0401在2011-5-29 17:07:41的发言:

a=(1,2,3,4,5,6)
结果为6,逗号表达式的值都为最后一个表达式的值,那我想我的是前面的表达式有什么用啊??当摆设吗??
就你举的这个例子来说,前面的表达式的确是摆设
很多书上的例子都是这样,语法上正确,但却没有任何实用价值

逗号表达式的核心作用是在只能写表达式的地方实现顺序求值


收到的鲜花
  • yang04012011-05-30 20:23 送鲜花  1朵   附言:我很赞同

《狂人C:程序员入门必备》
2011-05-30 18:01
baobaoisme
Rank: 7Rank: 7Rank: 7
来 自:AVATAR
等 级:黑侠
帖 子:260
专家分:506
注 册:2010-7-9
收藏
得分:5 
你这么用,的确是摆设。
2011-06-02 22:12
粉jj
Rank: 2
等 级:论坛游民
威 望:1
帖 子:123
专家分:82
注 册:2011-3-8
收藏
得分:5 
逗号运算符主要就是为了得到各表达式的值
把构成逗号表达式的各表达式遍历一遍,然后取最后一个表达式做整个逗号表达式的值。

[ 本帖最后由 粉jj 于 2011-6-2 23:04 编辑 ]
2011-06-02 23:03
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

技术问题,请不要以短消息方式提问
2011-06-02 23:08
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
前面的就是摆设

技术问题,请不要以短消息方式提问
2011-06-02 23:08
乌衣巷
Rank: 1
等 级:新手上路
帖 子:9
专家分:8
注 册:2012-9-9
收藏
得分:0 
回复 3楼 Moonod
把我的疑惑也给解决了,大神!!!!
2012-09-28 15:58
快速回复:逗号表达式的作用??????
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019845 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved