printf与cout混用输出先后顺序的问题
在代码中若使用了printf与cout,若不注意则会出现输出顺序与预想的不一致的问题。如下代码:
int main() { int i = 0; for (i = 0; i < 3; i++) { std::cout << "i= "; printf("%d\n", i); } return 0; }
输出结果为
0 1 2 i= i= i=
这是因为cout使用了缓存,数据保存在缓存中,不会立即输出,导致printf先输出的问题。若要避免此问题,需要在cout最后写上endl输出。
int main() { int i = 0; for (i = 0; i < 3; i++) { std::cout << "i= " << std::endl; printf("%d\n", i); } return 0; }