首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 专家好!帮帮小女子吧!
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiaobaoandkitty
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-05-11 17:47:52 楼主
    #include <iostream.h> 
    #include "stdio.h"   
    #include"stdlib.h"   
    #include"conio.h"   
    #include <windows.h>
    void  main()   
    {     
    cout < <"111" < <endl;  //如果把此行换成 cout < <"111\n"; 为什么两次执行结果不一样呢???   
    Sleep(10000);
    system("cls");     
    }
    一个是先显示111,再停10s后清屏;另一个是先停10s,再显示111,不清屏。能否详细帮我解释下,万分感谢啦!!!!
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • baihacker
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 3

    发表于:2008-05-11 17:49:591楼 得分:0
    因为endl就直接刷新缓冲区,进行输出了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • baihacker
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 3

    发表于:2008-05-11 17:53:082楼 得分:0
    cerr  < <"111\n";
    你可以这样使用
    这个是直接刷新缓冲区的

    cout要等等待输出的字符达到一定的数目才输出

    换句话说,让你去打水回来
    cout就是把桶打满了才回来
    cerr就是只要桶里有水就回来
    cout后面有endl的时候就是告诉你在cout的时候遇到endl就回来
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wqvbjhc
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-11 18:02:373楼 得分:0
    up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • clhposs
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-11 18:04:134楼 得分:0
    飞雪回答的很好
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yanvenhom
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-11 18:09:075楼 得分:0
    C/C++ code
    #include <iostream> #include <stdlib.h> #include <conio.h> #include <windows.h> int main() { std::cout << "111\n";//和用<< std::endl;代替的结果是一样的~~ Sleep(10000); system("cls"); return 0; }


    G++ 3.4.5,执行结果两个是一样的,都是先显示111,换行,然后过10s清屏……

    难道飞雪和楼主用的是VS?这个结果怎么会不一样??小弟完全困惑啦~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • baihacker
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 3

    发表于:2008-05-11 18:12:406楼 得分:0
    引用 5 楼 yanvenhom 的回复:
    C/C++ code
    #include <iostream>
    #include <stdlib.h>
    #include <conio.h>
    #include <windows.h>

    int main() {
        std::cout < < "111\n";//和用 < < std::endl;代替的结果是一样的~~
        Sleep(10000);
        system("cls");
        return 0;
    }

    G++ 3.4.5,执行结果两个是一样的,都是先显示111,换行,然后过10s清屏……

    难道飞雪和楼主用的是VS?这个结果怎么会不一样??小弟完全困惑啦~~


    如果出现楼主出现的情况,那么是我说的原因
    你的情况我也test了,和你说的一样,这说明直接就刷新了呗...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • grellen
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-11 18:55:407楼 得分:0
    为什么用G++ 两个执行的结果是一样啊,困惑啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lijiawlm
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-11 22:30:018楼 得分:0
    <C++ primer>里面说了  endl的作用是刷新缓冲区  就是不管缓冲区里面的东西够不够显示  都要显示
    而'\n'就是一个换行 如果不够填满缓冲区  就显示不一样
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Purple_Meteor
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-11 22:41:049楼 得分:0
    我晕,为什么现在那么多人提问都喜欢加上“小女子”三个字?只是为了吸引眼球?
    何必呢!即使你不加上“小女子”,同样也有人来回答你的问题啊!
    楼主下次问问题时,还是看看自己有没有小JJ吧!如果没有(不管是先天没有还是后天没有),你就可以使用“小女子”三个字了
    了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiaobaoandkitty
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-13 21:46:0710楼 得分:0
    谢谢各位老师了!!!我用的是VS哦
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lxhdj2008
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 08:49:2411楼 得分:0
    厉害!高人呐!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zywhuiss
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 10:13:1812楼 得分:0
    如楼上所说,缓冲区强制刷新的问题.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hslinux
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 16:00:1213楼 得分:0
    VS : cout  <  <"111\n";的话,估计是程序退出后才刷新缓冲。

    你试下:
    void  main()   
    {     
    cout  < <"111\n";// < < endl;  //如果把此行换成 cout  <  <"111\n"; 为什么两次执行结果不一样呢???   
    cout < <flush;
    Sleep(1000);
    system("cls");     
    }

    cout < < "111" < < endl; <=> cout < < "111\n" < < flush;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Treazy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-14 16:03:3614楼 得分:0


    建议去深入理解一下行缓冲与全缓冲的概念

    不同的os下可能实现的是不同的!
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved