鱼C论坛

 找回密码
 立即注册
查看: 3009|回复: 8

跪求这一题的结果与解释

[复制链接]
发表于 2012-7-23 08:42:40 | 显示全部楼层 |阅读模式
1鱼币
#include<stdio.h>
int main()
{
int a=2,b=4,c=6,x,y;
y=(x=a+b),(b+c);
printf("%d,%d\n",y,x);
return 0;
}

最佳答案

查看完整内容

你想的是要逗号表达式的问题吧。。。。你这里的 y = (x = a + b) ,(b + c); 这里因为 逗号运算符(,)的优先级低于 赋值(=)运算符,所以 先执行 y = (x = a + b) .后面的直接被编译器优化掉,理论是会被执行,但是没有没有往做任何赋值操作,所以忽略。。。所以打印结果为6,6........................... 如果你代码改为 y = ((x = a + b), (b + c)) 这样的话 y的值就是 b + C 的值,因为逗号表达式起作用了。。。 x == ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-23 08:42:41 | 显示全部楼层
你想的是要逗号表达式的问题吧。。。。你这里的 y = (x = a + b) ,(b + c); 这里因为  逗号运算符(,)的优先级低于 赋值(=)运算符,所以 先执行 y = (x = a + b) .后面的直接被编译器优化掉,理论是会被执行,但是没有没有往做任何赋值操作,所以忽略。。。所以打印结果为6,6...........................

如果你代码改为 y = ((x = a + b), (b + c)) 这样的话  y的值就是 b + C 的值,因为逗号表达式起作用了。。。

x == a +b == 6   y == b + c  == 10;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-23 09:00:01 | 显示全部楼层
该程序的打印出来的结果应该是6,6.#include<stdio.h>
int main()
{
   int a=2,b=4,c=6,x,y;//定义几个整型变量,a,b分别赋值2,4
   y=(x=a+b),(b+c);//将a+b的计算结果赋值给x,在赋值给y,结果x的值等于y的值
   printf("%d,%d\n",y,x);//%d是输出类型为整型,\n是回车。
   return 0;//return是返回值,此题返回值为0.
}
该程序也可以这样
#include<stdio.h>
void main()
{
    int a=2,b=4,c=6,x,y;
    y=(x=a+b),(b+c);
    printf("%d,%d\n",y,x);
    //return 0;
}



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-23 09:14:21 | 显示全部楼层
楼上说的不错,y=(x=a+b),(b+c);在这里(b+c)是无用字符。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-23 09:30:46 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-23 09:31:17 | 显示全部楼层
洋溢丶sniper 发表于 2012-7-23 09:30
这一题主要考的是逗号运算符的优先级哎

额 貌似不是这个样子滴    我看小甲鱼童鞋视频里有这题但是没有讲解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-23 09:53:31 | 显示全部楼层
逗号运算符的优先级是最低的,比赋值运算符还要低。y = (x = a + b),b + c;这个式子中,从()运算到+运算,再到逗号运算,前面运算出来的结果应与b+c同级,你要求打印的是x,y,那么b + c不久相当于无用语句了吗?个人理解,你去实验下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-24 14:32:27 | 显示全部楼层
楼上已经有正确答案了吧...就是再多加一个括号,让逗号运算符在赋值运符之前运输就OK了..
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-8-5 14:47:41 | 显示全部楼层
洋溢丶sniper 发表于 2012-7-23 09:31
额 貌似不是这个样子滴    我看小甲鱼童鞋视频里有这题但是没有讲解答

大哥,我前两天也问过这问题,甲鱼前辈用小手点了NNNNN次说是y=b+c,当时就懵了.....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-11 10:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表