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;
}

Comments are closed.