cout 跟printf 求解释
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。两者各自有自己的缓冲区,虽然有同步机制,但是有时的确不会按照你想的来。一个缓冲区刷新了,另外一个不一定也同步刷新。
[解决办法]你用的啥编译器?
我这里2个代码都行为都是一样的
[解决办法]理解“流”的概念,scanf是从流当中按格式提取信息,如果没有合适的信息可提取,那么流是不会动的。
[解决办法]2个的运行效果应该是一样的啊,LZ用的什么编译器啊,说明一下可以么
[解决办法]printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方,而且通常编译还不出错。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
不要写连自己也预测不了结果的代码!
对学习编程者的忠告:
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步对应汇编一行!
[解决办法]应该是你没编译成功吧