首页
社区
课程
招聘
[旧帖] [求助]一简单C语言代码麻烦大侠解释下 0.00雪花
发表于: 2009-3-11 12:31 4231

[旧帖] [求助]一简单C语言代码麻烦大侠解释下 0.00雪花

2009-3-11 12:31
4231
我是一个C语言   和  汇编初学着。。。
今天我看到书上一代码
  代码如下:
     #include<stdio.h>
      main(){
       int i,k,x,y;
        for(y=1;y<10;)
       y=((x=3*y,x+1),x-1);
        printf("x=%d y=%d\n",x,y);
      }

TC   的输出结果是  x=15   y=14

     请版主 或拿位大哥 帮小弟   完整的解释下  它是怎么算到这结果的
  好吗?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
y=((x=3*y,x+1),x-1);

这句话什么意思?写错了吧?
2009-3-11 12:41
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
y=((x=3*y,x+1),x-1);
这个是y取后面x-1的值.
2009-3-11 12:51
0
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
C语言里面有种叫做逗号表达式的东西,它的值是最右边一项的值(即最后一个逗号右边的表达式的值)
for(y=1;y<10;)
y = ((x=3*y,x+1),x-1);
第一次循环开始y=1,x=未知值
本次循环之后x=3*y=3,y=x-1=2

y=2<10,第二次循环开始y=2,x=3
本次循环之后x=3*y=6,y=x-1=5

y=5<10,第三次循环开始y=5,x=6
本次循环之后x=3*y=15,y=x-1=14

y=14不再<10,循环结束,此时x和y的值分别为15,14.

不知道你看的什么书,平时强烈不建议如此写程序,估计也没人会这样写程序,可读性极低并且毫无意义。
2009-3-11 12:51
0
雪    币: 210
活跃值: (56)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
楼上的解释得很明白,就不多讲啦
2009-3-11 12:56
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
     非常感谢  stalker  大哥 这么具体的解释   和建议   
                                                 哪个是语句结构后的一个小题
2009-3-11 13:03
0
雪    币: 235
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
其实,真的写程序时候,写这样的代码会被其他人砍死的。

代码可读性很重要
2009-3-11 21:02
0
雪    币: 829
活跃值: (2076)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
呵呵 很好的学习题呀
2009-3-11 21:30
0
雪    币: 211
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
这样的代码用来学学语法还可以。项目开发里如果这样写,没准被扣奖金。
2009-3-12 11:39
0
游客
登录 | 注册 方可回帖
返回
//