rock8312 发表于 2013-12-21 03:21:55

逗号表达式问题??

#include <stdio.h>
void main()
{
int a = 2, b = 5, c = 6, x, y;
y = (x = a + b), (b + c);
printf("y=%d, x=%d\n", y, x);
}
输出为什么Y和X都是7的?不是以逗号最后一条表达作赋值Y应该是y=b+c

rock8312 发表于 2013-12-21 03:24:07

其一般形式为:
表达式1,表达式2
其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。

【例3.19】
void main()
{
int a=2,b=4,c=6,x,y;
y=(x=a+b),(b+c);
printf("y=%d,x=%d",y,x);

烟消云散 发表于 2013-12-21 14:12:00

本帖最后由 烟消云散 于 2013-12-21 14:15 编辑

逗号表达式的整个表达式值是最后一个表达式的值
注意看红色部分
#include <stdio.h>
void main()
{
int a = 2, b = 5, c = 6, x, y;
y = ((x = a + b), (b + c));
printf("y=%d, x=%d\n", y, x);
}

输出 y=11, x=7


rock8312 发表于 2013-12-21 16:24:40

烟消云散 发表于 2013-12-21 14:12 static/image/common/back.gif
逗号表达式的整个表达式值是最后一个表达式的值
注意看红色部分
#include


明白了,教学哪里好像没有说清楚!!!!

rock8312 发表于 2013-12-21 16:25:14

rock8312 发表于 2013-12-21 16:24 static/image/common/back.gif
明白了,教学哪里好像没有说清楚!!!!

:hug:thx:hug谢谢

CL0419 发表于 2013-12-21 17:59:35

//这看起来虽然是逗号运算符,但是实际上结果却不是我们想要的,结果是: x = 7, y = 7。
//原因: 当执行这段代码时,y = (x = a + b), (b + c);实际上是把x = a + b的值赋给y了,因为赋值运算比逗号运算符的优先级高。
如果想要逗号运算符所需的结果,你可以借鉴楼上那些大神的。

烟消云散 发表于 2013-12-22 01:07:37

rock8312 发表于 2013-12-21 16:25 static/image/common/back.gif
thx:hug谢谢

{:5_109:}不用谢,共同进步
页: [1]
查看完整版本: 逗号表达式问题??