c++中cout和printf区别

Dloud 2012-10-03 11:42:51
我做oj题时候
使用printf("%ld\n",sum)和使用cout << sum << endl输出结果不一样
...全文
429 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
漫步者、 2012-10-05
  • 打赏
  • 举报
回复
printf把数据格式化,这些格式化的数据类型需要自己写,而cout是封装了一些基本的内置类型,直接输出,在速度上printf优于cout
ljhhh0123 2012-10-04
  • 打赏
  • 举报
回复
printf要你亲自指定类型及输出精度。
cout已经给你判断好了类型和预定义了精度。
hongwenjun 2012-10-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

在速度上printf要优秀许多,在格式的设置上printf也方便许多。
在不需要控制输出格式的时候,cout就方便了,可以自动识别类型。
[/Quote]

速度上,两个没什么差别,反正直接写控制台都是很慢的。
哪就比较 sprintf 和 stringstream了,速度都还可以
速度 sprintf 简单和格式控制方便,
stringstream 功能和使用写的代码少点,习惯 C 的对他分配内存比较挑剔
summer_insects 2012-10-03
  • 打赏
  • 举报
回复
2L+1
huangxy10 2012-10-03
  • 打赏
  • 举报
回复
在速度上printf要优秀许多,在格式的设置上printf也方便许多。
在不需要控制输出格式的时候,cout就方便了,可以自动识别类型。
stereoMatching 2012-10-03
  • 打赏
  • 举报
回复
搞错type了?cout会自己判断type,printf不会,先确定你输入的%ld和sum的type是一致的
huangxy10 2012-10-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用楼主 的回复:
我做oj题时候
使用printf("%ld\n",sum)和使用cout << sum << endl输出结果不一样

输错了,应该是printf("%lf\n",sum)
[/Quote]

对于浮点数的输出,oj题目一般会注明输出格式的,比如保留两位小数等要求。
printf用“%lf”默认是留6个小数的。
而cout则没有此规定。
可以看看下面程序输出的不同。

#include<iostream>
using namespace std;

int main()
{
double sum=10.385;
cout<<sum<<endl;
printf("using printf: %lf\n",sum);
return 0;
}

Dloud 2012-10-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
我做oj题时候
使用printf("%ld\n",sum)和使用cout << sum << endl输出结果不一样
[/Quote]
输错了,应该是printf("%lf\n",sum)

64,645

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧