printf函数是否只能最大输出-2147483648

NeuSoftRen 2005-10-06 01:54:19
程序如下:
#include <iostream>
#include <stdio.h>
int main()
{
unsigned int i=1;
cout<<"2 power 31 is "<< (i<<31)<<endl;
printf("%x\n",i<<31);
printf("%d\n",i<<31);
return 0;
}
输出为:
2147483648
80000000
-2147483648
可见cout可以正常输出,而printf受到最大制限了,不知道哪位大虾可以指点一下
...全文
152 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
antijpn 2005-10-06
  • 打赏
  • 举报
回复
拿着C++代码,跑到C语言来,不合适吧吧?

丢到C++去
xiaocai0001 2005-10-06
  • 打赏
  • 举报
回复
楼上整得跟做广告似的~~~

__int64 是 MS系列才支持的. 不具有通用性
A_Knuth_A 2005-10-06
  • 打赏
  • 举报
回复
不用很麻烦,如果你用的是Visual C++或Visual C++.net的系列版本,并且仔细看过相关MSDN项,可以了解到,在C++中有__int64这个变量类型(在visual c++中,注意是两个下划线),它支持64bit类型,当变量申请为unsigned类型时,它可以表示的范围是0~~(2^63)-1,而当变量为signed的有符号类型时,它可以表示的范围是-(2^62)-1~~(2^62)-1,这种长整型的变量在visual c++中用pringf()函数进行输出时,格式为%<-><0><x>I64<y>,其具体含义可以参考MSDN,还有问题可以Email我a_knuth_a@yahoo.com.cn,再见。
xiaocai0001 2005-10-06
  • 打赏
  • 举报
回复
可以

用cout.setf(ios::hex);
NeuSoftRen 2005-10-06
  • 打赏
  • 举报
回复
cout可以格式化输出吗,比方说想以16进制输出该怎么办呢
xiaocai0001 2005-10-06
  • 打赏
  • 举报
回复
printf("%d\n",i<<31);
改成
printf("%lu\n",i<<31);

64,282

社区成员

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

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