首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

cout 跟printf 求解释

2013-03-25 
cout 和printf 求解释//程序一#include iostreamusing namespace stdint main(){int awhile(scanf(%l

cout 和printf 求解释
//程序一

#include <iostream>
using namespace std;
int main(){
int a;
while(scanf("%lf",&a) && a){
cout<<a<<"\n";
}
}

//程序二
#include "stdio.h"
int main(){
int a;
while(scanf("%d",&a)&&a){
printf("%d\n",a);
}
return 0;
}

这两个程序的区别就在cout和printf,我执行的结果就是程序二会等到输入0的时候一次性输出所有的数字,但是程序一会在每输入一个数字,并且回车后,立即输出这个数字,按照一直说的cout有缓冲区,printf没有缓冲区的话,不应该出现这样的问题啊。搞不懂怎么回事啊,求大牛解释。
[解决办法]
表示没有出现楼主说的问题

[解决办法]
不要混用C的scanf/printf和C++的cin/cout。两者各自有自己的缓冲区,虽然有同步机制,但是有时的确不会按照你想的来。一个缓冲区刷新了,另外一个不一定也同步刷新。
[解决办法]
引用:
引用:引用:引用:程序1 %lf 对应的是double ,而你是int a 已经错了。
sorry,我贴的时候贴错了,重点是下面的cout和printf啊,
C/C++ code?12345678#include <iostream>using namespace std;i……

你用的啥编译器?
我这里2个代码都行为都是一样的
[解决办法]
理解“流”的概念,scanf是从流当中按格式提取信息,如果没有合适的信息可提取,那么流是不会动的。

[解决办法]
2个的运行效果应该是一样的啊,LZ用的什么编译器啊,说明一下可以么
[解决办法]
printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。

不要写连自己也预测不了结果的代码!

对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!

[解决办法]
引用:
我发现,可能和notpad++有关系的,之前虽然有几次在vs2008下面运行出现两种结果不一样的情况,但是后面修改了“%lf”->“%d”的错误之后,在vs2008下面就没再出现这样的问题。但是我用notepad++配置了cl.exe 编译器编译运行的时候,就会出现上述的两种结果不一样的情况。虽然最后也没有解决,不过既然这样的话,估计应该是cl和notepad++结合的时候,出现的什么状况吧。
……

应该是你没编译成功吧

热点排行