LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 834|回复: 6

问一个关于FOR循环的问题

[复制链接]
发表于 2006-1-8 16:14:51 | 显示全部楼层 |阅读模式
下面:

for(i=0;i<20;printf("-"),++i)
;
while(j<10)
{
printf("%d\n",j);
}
结果是先打印20个"-"再打印j
但是如果改成
for(i=0;i<20;printf("-"),++i)
while(j<10)
{
printf("%d\n",j);
}
就成了先打印j再打印20个"-".

请问for语句不跟";"表明是空循环体,为什么会出现这样的情况啊?
发表于 2006-1-8 16:20:29 | 显示全部楼层
楼主,看起来你没有亲自运行这段代码。如果你没有运行代码,先亲自运行了再来问。
回复 支持 反对

使用道具 举报

发表于 2006-1-8 16:24:30 | 显示全部楼层
请问for语句不跟";"表明是空循环体

这句话不对!你第二段代码的话while就是for循环里面的了,还有那个j是从哪里来的,根本没有初始化,while循环里面也没有见改。
回复 支持 反对

使用道具 举报

发表于 2006-1-8 16:40:14 | 显示全部楼层
楼主的意思是这样的
#include <stdio.h>
int main()
{
    int i,j=0;
    for (i=0;i<20;printf("-"),++i)
    while(j<10)
    {
        printf("%d\n",j);
        j++;
    }
    return 0;
}

加个;的不用说了,成了单独语句。
关键是不加的,好像子语句有个顺序问题
回复 支持 反对

使用道具 举报

发表于 2006-1-8 16:45:02 | 显示全部楼层
#include <stdio.h>
int main()
{
    int i,j=0;
    for (i=0;i<20;[color="Red"]/*printf("-"),*/++i)
    {
        while(j<10)
        {
            printf("%d\n",j);
            j++;
        }
      [color="Red"]  printf("-");
    }
    return 0;
}
上面的形成等价
FOR中的子句好像是只能最后执行的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-1-8 17:00:36 | 显示全部楼层
其实我懒惰...没有都COPY上来...哈哈...认错认错因为打印的东西多,所以随便用个J就代替了那一大堆...-_-bbb)

多谢楼上的提醒明白了
回复 支持 反对

使用道具 举报

发表于 2006-1-8 18:04:52 | 显示全部楼层
c语言其实很简单。。。
不过千万不要相信这句话
回复 支持 反对

使用道具 举报

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

本版积分规则

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