鱼C论坛

 找回密码
 立即注册
查看: 4171|回复: 5

为什么不加endl不能正常显示 ??求解释

[复制链接]
发表于 2012-10-17 23:20:31 | 显示全部楼层 |阅读模式

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

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

x
#include<stdio.h>
#include<iostream.h>
void main()  
{  
char c;  
int letters = 0, space = 0, digit = 0, others = 0;  
cout<<"please input some characters:";  
while ((c = getchar()) != '\n')  
{  
if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')  
letters++;  
else if (c == ' ')  
space++;  
else if (c >= '0' && c <= '9')  
digit++;  
else  
others++;  
}  
cout<<"letters="<<letters<<endl
<<" space="<<space<<endl
<<" digit="<<digit<<endl
<<" others="<<others<<endl;
}

cout<<"please input some characters:"; //为什么要在这句后面加上<<endl;在开始显示的时候才能显示please input some characters:呢?如果不加的话,运行时只有一个光标在跳动,谁知道给解释一下,谢谢
不要说编译器版本之类的问题,我想知道问题的本质,还有我知道endl具有双层意思,换行和涮新缓存,但是不能很好的掌握和理解第二重意思,望大虾的指教!!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-18 08:28:58 | 显示全部楼层
结束符,C++字符串是流,当然要有结束的标志呀!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-18 09:13:41 | 显示全部楼层
c++中的endl就是换行符
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-18 11:21:07 | 显示全部楼层
endl有两个意思,首先是将“\n”写入输出流,第二个是调用flush函数,刷新缓冲区,你想想这个函数的功能,刷新缓冲区前肯定要打印之前的缓冲区的内容嘛  所以肯定会显示之前的内容嘛。如果去掉endl的话,之前的内容还会在缓冲区,那就不会立刻打印出来啦。反正我是这样理解的。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-18 11:24:06 | 显示全部楼层
结束符,C++字符串是流,当然要有结束的标志呀!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-18 11:26:17 | 显示全部楼层
endl有两个意思,首先是将“\n”写入输出流,第二个是调用flush函数,刷新缓冲区,你想想这个函数的功能,刷新缓冲区前肯定要打印之前的缓冲区的内容嘛  所以肯定会显示之前的内容嘛。如果去掉endl的话,之前的内容还会在缓冲区,那就不会立刻打印出来啦。反正我是这样理解的。:lol
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-11-15 18:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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