鱼C论坛

 找回密码
 立即注册
查看: 3991|回复: 19

高手求救,不理解int a=2,b=4,c=6,x,y;

[复制链接]
发表于 2013-5-16 19:58:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include "stdio.h"
void main()
{
        int a=2,b=4,c=6,x,y;
        y=(x=a+b),(b+c);
        printf("y=%d,x=%d\n",y,x);
}


为什么结果是y=6,x=6

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-16 20:55:01 | 显示全部楼层
没学过编程。。是不是 X Y只是定义了还没赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-16 22:11:34 | 显示全部楼层
y和x是等于6啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-16 22:31:45 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-16 22:44:57 | 显示全部楼层
因为赋值运算的优先级高于逗号运算符。所以 y=(x=a+b),(b+c);这条语句相当于 y=(x=a+b); (b+c);也就是说(b+c)没给任何变量赋值,没有意义的。这是我的想法,希望对你有帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-16 23:26:54 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-16 23:36:32 | 显示全部楼层
mov         eax,dword ptr [ebp-4]
add         eax,dword ptr [ebp-8]
mov         dword ptr [ebp-10h],eax
mov         ecx,dword ptr [ebp-10h]
mov         dword ptr [ebp-14h],ecx
汇编里的意思是直接进行y=x=a+b这个操作,逗号后面的压根没执行啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-16 23:40:48 | 显示全部楼层
逗号运算符!!!!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-17 00:04:21 | 显示全部楼层
我只是路过打酱油的。{:7_148:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-17 14:15:57 | 显示全部楼层
真是难得给力的帖子啊。:lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-17 15:04:21 | 显示全部楼层
你要明白, int a = 2, b = 4, c = 6, x, y;
y = 6, 10 这个值是多少。有点像你点义一个类型:
int a, b; 而不是int (a, b);
你这个题 是y = (x = a+b), (b+c); 而不是:
y = ((x = a+b), b+c); 你这里的根本就不是逗号表达式。
就你你:int a = 9, 5; 你说a是多少?--->> 9吧, 5写在那是没有错的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-17 16:47:51 | 显示全部楼层
y=(x=a+b),(b+c);
这句话不知道你想表达什么意思啊
x也没用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-17 19:25:54 | 显示全部楼层
#include "stdio.h"
void main()
{
        int a=2,b=4,c=6,x,y;
        y=(x=a+b),(b+c);//你 的y本来就是直接等于x,难道你的本意是y=((x=a+b)+(a+b))
        printf("y=%d,x=%d\n",y,x);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-17 19:47:10 | 显示全部楼层
y=(x=a+b),(b+c);  (b+c)没有用白写了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-17 23:07:34 | 显示全部楼层
我只是路过打酱油的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-17 23:26:21 | 显示全部楼层
逗号运算符是从右往左结合的,他先执行右边的式子,然后使用(这里没有使用就直接丢弃了),再执行左边的式子.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-17 23:50:49 | 显示全部楼层
都是6,因为(b+c)没有赋给y
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-18 00:55:37 | 显示全部楼层
我也有这样的疑问,不过看到大家的回帖我懂了,谢谢啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-18 08:09:54 | 显示全部楼层
结果就是这样的啊  提炼出来就是 y=x=a+b;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-18 10:12:31 | 显示全部楼层
y=((x=a+b),(b+c));
最外面加上括号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-13 15:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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