鱼C论坛

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

逗号表达式问题??

[复制链接]
发表于 2013-12-21 03:21:55 | 显示全部楼层 |阅读模式

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

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

x
#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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-12-21 03:24:07 | 显示全部楼层
其一般形式为:
表达式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);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-21 14:12:00 | 显示全部楼层
本帖最后由 烟消云散 于 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


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

使用道具 举报

 楼主| 发表于 2013-12-21 16:24:40 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-21 16:25:14 | 显示全部楼层
rock8312 发表于 2013-12-21 16:24
明白了,教学哪里好像没有说清楚!!!!

:hug:thx:hug谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-21 17:59:35 | 显示全部楼层
//这看起来虽然是逗号运算符,但是实际上结果却不是我们想要的,结果是: x = 7, y = 7。
//原因: 当执行这段代码时,y = (x = a + b), (b + c);实际上是把x = a + b的值赋给y了,因为赋值运算比逗号运算符的优先级高。
如果想要逗号运算符所需的结果,你可以借鉴楼上那些大神的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-22 01:07:37 | 显示全部楼层

不用谢,共同进步
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 02:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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