鱼C论坛

 找回密码
 立即注册
查看: 4796|回复: 7

<请教小甲鱼老师>关于零基础入门学习C语言,第二章的一个问题。

[复制链接]
发表于 2013-3-31 15:20:38 | 显示全部楼层 |阅读模式

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

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

x
第二章最后的一节课中,逗号运算符和逗号表达式
小甲鱼老师讲的:
在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式。
其一般形式为:
表达式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);
}

但是我按着这个例子输入调试,最后输出y=6,x=6,不是小甲鱼老师讲的那样,以表达式2的值作为整个逗号表达式的值。
后来请教别人是因为y=(x=a+b),(b+c);这句代码有问题,少了(),正确的应该是y=((x=a+b),(b+c));
这样子最后才会输出y=10,x=6.
请问小甲鱼老师您是不是又打错了呢?您常说老打错的:loveliness:
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-1 12:15:31 | 显示全部楼层
路过,顶一下
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-1 13:08:40 | 显示全部楼层
楼主说得对啊。。。。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-1 13:09:54 | 显示全部楼层
按照第一个表达式的话,会将(x=a+b)先赋值给Y,而第二个表达式是在括号里的,会将(b+c)的值赋值给Y
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-1 14:10:07 | 显示全部楼层
我也很想知道,大家分析一下
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-4-1 14:46:10 | 显示全部楼层
你们可以按照例调试一下
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-4-1 14:49:05 | 显示全部楼层
void main()
{
   int a=2,b=4,c=6,x,y;
   y=(x=a+b),(b+c);
   printf("y=%d,x=%d",y,x);
}
最后输出X=6,Y=6
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-4-1 15:00:02 | 显示全部楼层
照这样说  int a=2,b=4,c=6,x,y;是不是a=y才是吗,其实一个逗号是一个顺序点,关于“副作用和顺序点”看C primer plus(第五版)103页有介绍
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-8-4 18:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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