逗号表达式问题??
#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
其一般形式为:
表达式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: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
烟消云散 发表于 2013-12-21 14:12 static/image/common/back.gif
逗号表达式的整个表达式值是最后一个表达式的值
注意看红色部分
#include
明白了,教学哪里好像没有说清楚!!!! rock8312 发表于 2013-12-21 16:24 static/image/common/back.gif
明白了,教学哪里好像没有说清楚!!!!
:hug:thx:hug谢谢 //这看起来虽然是逗号运算符,但是实际上结果却不是我们想要的,结果是: x = 7, y = 7。
//原因: 当执行这段代码时,y = (x = a + b), (b + c);实际上是把x = a + b的值赋给y了,因为赋值运算比逗号运算符的优先级高。
如果想要逗号运算符所需的结果,你可以借鉴楼上那些大神的。 rock8312 发表于 2013-12-21 16:25 static/image/common/back.gif
thx:hug谢谢
{:5_109:}不用谢,共同进步
页:
[1]