这程序小纠结
#include <stdio.h>void main()
{
int a=2,b=4,c=6,x,y;
y=(x=a+b),(b+c),(5+c);
printf("y=%d,x=%d\n",y,x);
}
想问一下最后y输出的是(5+c),还是a+b;
输出a+b
如果是y=((x=a+b),(b+c),(5+c));
就输出5+c 直接试试不就行了。 同意2楼和3楼。楼主,这是考试题吗? 试试不就得了 y=6,x=6``` 目测楼主应该是把逗号表达式没有理解透。{:1_1:}
y=(x=a+b),(b+c),(5+c);在这个表达式中由于存在逗号表达式!而逗号表达式是只把最后一项的值作为整个表达式的值,所以此时Y=5+c, 而printf("y=%d,x=%d\n",y,x);这个表达式中是将Y的值和X的值输出来,这里的逗号只是作为一个分隔符的,不算是逗号表达式,所以此时X=a+b
最终屏幕输出结果为: x = 6
y = 11
望楼主采纳。 By丶Joker_Qzi □为 发表于 2012-10-4 09:33 static/image/common/back.gif
目测楼主应该是把逗号表达式没有理解透。
y=(x=a+b),(b+c),(5+c);在这个表达式中由于存在逗号表达式 ...
纠正一下吧,其实亲自调试一下应该就能发现y=6,x=6
确实,按照逗号表达式的规定,最后一项为整个表达式的值,但是还要考虑运算符的优先级
赋值运算符=为十四级,而逗号运算符,为十五级,在同一语句中要先算=
也就是说原语句相当于(y=(x=a+b)),(b+c),(5+c);,也就是说x和y都等于a+b,虽然整个表达式值为5+c但没有变量来接受这个值
这也是为什么y=((x=a+b),(b+c),(5+c));中y就等于5+c的原因,先算括号里的,逗号表达式就比赋值表达式优先了 the_one 发表于 2012-10-4 17:44 static/image/common/back.gif
纠正一下吧,其实亲自调试一下应该就能发现y=6,x=6
确实,按照逗号表达式的规定,最后一项为整个表达式的 ...
呃…对啊!!卧槽 刚发现呵呵 谢啦~~~~ y=(x=a+b),(b+c),(5+c);什么意思? int main()
{
int a = 2, b = 4, c = 6, x, y;
y = (x = a + b), (b + c);
printf("y = %d, x = %d\n",y,x);
a = 2, b = 4, c = 6, x, y;
y = ((x = a + b), (b + c));
printf("y = %d, x = %d\n",y,x);
return 0;
}
试试这个吧:ton:
页:
[1]