关于c语言中的逗号运算符???

x=(200,500)为什么x最后赋值是500不是200啊书上解释的看不太懂,求大神解释??... x=(200,500)
为什么x最后赋值是500不是200啊 书上解释的看不太懂,求大神解释??
展开
 我来答
LHXYZD
推荐于2017-09-11 · TA获得超过2204个赞
知道小有建树答主
回答量:900
采纳率:50%
帮助的人:662万
展开全部
等下。。答错了。。还需要理解一下神马是逗号表达式。。我前面说的和uuyyhhjj与delta_charlie的意思一样,但其实我们都搞错了。你可以自己把我们的例子都运行一下,看看是不是这样。下面我感觉应该是我正确的理解。
逗号表达式是所有运算符中优先级最低的,比赋值运算符还要低。他的作用就是把每个表达式都算一遍,并且把最后一个表达式返回的值作为逗号表达式的值。(把其他的都不管了)

像你说的那个,如果是
x=200,500;
(没有括号),x就会等于200,然后上面整个式子的值是500。

但是有括号的话, (200,500) 就是一个单独的式子,他的值是500,所以x=(200,500)最后赋值给x就是500

举几个例子,

x=(21,22,23,24,25);
这个里面,先算括号里的,前面的21到24算过后都被丢弃,括号里的表达式的值是25。之后执行赋值运算,x的值就变成括号里表达式的值,25了。
如果编译
int x;
int a;
x=(21,22,23,24,25);
cout<<"x="<<x<<endl;
会输出
x=25

x=21,22,23,24,25;
这行整个是一个表达式。
逗号运算符会分别计算表达式x=21、22、23 、24、25(单独一个数字也可以叫做表达式)。
然后他会用最后一个表达式作为逗号表达式的值。所以整个式子(整个一行)的值是25。但是因为这个值并没有返回给别的变量,他就也被丢弃了。
如果编译
int x;
x=21,22,23,24,25;
cout<<x;
输出是21。

a=(x=21,22,23,24,25);
这个里面,除了给x赋值,它又把逗号表达式的值25赋给a。
如果编译
int x;
int a;
a=(x=21,22,23,24,25);
cout<<"x="<<x<<endl;
cout<<"a="<<a<<endl;

会输出
x=21
a=25

a=(x=21,22,23,24,x*25);这个里,赋值给x之后又利用x计算了逗号表达式的值,21*25,最后把这个值赋给a
如果编译
int x;
int a;
a=(x=21,22,23,24,x*25);
cout<<"x="<<x<<endl;
cout<<"a="<<a<<endl;
会输出
x=21
a=525

简单来说,逗号的作用就是执行每一个表达式,然后用最后一个表达式作为他它的值。
看这个可能可以帮助你理解 http://blog.csdn.net/great_ghoul/article/details/1779768
如有疑问,欢迎您的追问。
律云淦弘丽
2019-02-06 · TA获得超过3774个赞
知道大有可为答主
回答量:3166
采纳率:31%
帮助的人:157万
展开全部
你的问题似乎写错了个地方,应该是a=(
b,c--,d+3)吧,这个是《逗号运算符和表达式》那一节的,“逗号运算符按照从左到右依次运算,整个逗号表达式的值是最右边那个表达式的值”。
括号里面就是一个逗号表达式,a取逗号表达式的值。所以答案是a=8.
很专业的哦,给采纳哈。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
骆浩闪灵珊
2019-01-08 · TA获得超过3788个赞
知道大有可为答主
回答量:3147
采纳率:34%
帮助的人:206万
展开全部
int
a=3,b=4,c=5;
c=(a+=a-=a),//这里是分开两句话的
(b=a,c+2);
a+=a-=a这个是从右往左运行
a-=a
a=0
a+=a
a=0
c=a
c=0所以c=0
b=a
b=0
c+2
c不变
不是的
是要括号括上才取最后一个
比如
c=((a+=a-=a),(b=a,c+2));
这样才是取后面的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友62f6aaa
2013-07-28
知道答主
回答量:25
采纳率:0%
帮助的人:21.1万
展开全部
逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式,称为逗号表达式。
逗号运算符的优先级是所有运算符中级别最低的,所以x=(200,500)先运算(200,500),200之后是500,所以x=500咯。
如果表达式是这样x=(3+4,4+7),x最后结果是4+7,即x=11。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友552a555
2013-07-29 · TA获得超过2259个赞
知道大有可为答主
回答量:2433
采纳率:22%
帮助的人:702万
展开全部
在C种 逗号可以当作运算表达式来计算
举例 x=(x=1,x=x+1,x+2) 它是从左自右计算的,等同于先将X赋值为1,然后计算X+1=1+1=2,最后 2+2=4,返回的是4

而你看的这本书估计根本就没怎么详细讲
当X=(200,500,600) 时 ,X先为200,随后又为500,最后又为600,因为没有赋值操作,所以200和500就被覆盖了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式