这个简单的输入输出C++程序为什么会运行出这么奇怪的结果

#include<stdio.h>#include<iostream.h>#include<iomanip.h>intmain(){intn;cout<<"请输入数据:"... #include <stdio.h>
#include <iostream.h>
#include <iomanip.h>

int main()
{
int n ;
cout<<"请输入数据:" ;
cin>>n ;

cout<<n<<"in hexadecimal is:"
<<hex<<n<<endl
<<dec<<n<<"in octal is:"
<<oct<<n<<endl;

n=1;
do
{
n++;
}while(n>2);
cout<<n<<endl ;

n=-1;
for(;n>2;n++) ;
cout<<n<<endl;

return 0 ;
}

<n<<!--<n<</n<
展开
 我来答
百度网友3b082e4
2015-11-07 · TA获得超过226个赞
知道小有建树答主
回答量:153
采纳率:0%
帮助的人:190万
展开全部

cout的默认输出格式为10进制,而上述题目在最后一个打印时,将默认的输出格式设置成了8进制,所以当n=-1时,输出的8进制,即为377777777777;

当将默认的输出格式设置为16进制时,会输出ffffffff;

当将默认的输出格式设置为10进制时,会输出-1;

当然也可通过setbase函数设置进制数,(头文件#include <iomanip>)

	cout<<dec<<n<<endl;
cout<< setbase(16) <<n<<endl;
cout<<hex<<n<<endl;
cout<<oct<<n<<endl;
恋红2010
2015-11-07 · TA获得超过1961个赞
知道大有可为答主
回答量:1469
采纳率:50%
帮助的人:573万
展开全部

令你觉得奇怪难道是最后一个-1被输出成37777777777?

如果确实是这个情况,那是因为你在上面使用cout输出时使用了格式化,将输出的数值置基数为8进制了。

cout<<oct<<n<<endl;

要恢复显示出-1,可以将基数置回十进制:

n=-1;
for(;n>2;n++) ;
cout<<dec<<n<<endl;//这句中加入了dec将基数重置回十进制格式
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式