鱼C论坛

 找回密码
 立即注册
查看: 2987|回复: 6

关于逗号运算符和逗号表达式的问题

[复制链接]
发表于 2012-5-4 12:48:40 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 poezhu 于 2012-5-4 15:09 编辑

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


请问这题的Y不是应该等于(b+c)的值10吗,为什么在VC++6.0编译的结果却等于6?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-5-4 13:59:39 | 显示全部楼层
本帖最后由 樊启蒙 于 2012-5-4 14:01 编辑

你这样试试看:
void main()
{
  int a=2,b=4,c=6,x,y;
  y=( (x=a+b),(b+c) );
  printf("y=%d,x=%d",y,x);
}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-5-4 14:21:37 | 显示全部楼层
2楼正解,楼主你的变量x和变量y是相等的都等于六,你的那个意思是把x赋值给了y,而不是把(b+c)赋值给y
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-5-4 15:08:56 | 显示全部楼层
谢谢两位 ,明白。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-5-10 05:38:43 | 显示全部楼层
运算符优先级
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-6-17 00:52:35 | 显示全部楼层
逗号运算符的优先级别永远低于赋值运算符,(y=(x=a+b)),(b+c)
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-6-17 01:38: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);
}
先执行y=(x=a+b)  由于加减运算符优先于赋值运算符,因此y=x=6;那么这里x和y都为6
       然后再执行b+c
最后输出x和y肯定都为6;
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-11-13 04:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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