一个简单的c++程序,请帮忙分析一下(输入输出格式控制方面)

来源:百度知道 编辑:UC知道 时间:2024/05/09 03:17:04
#include<iostream.h>
void main(void)
{
int i;

cin>>hex>>i;
cout<<i<<endl;
cout<<"i= "<<dec<<i<<endl;
cout<<"i= "<<hex<<i<<endl;
cout<<"i= "<<oct<<i<<endl;

cin>>dec>>i;
cout<<i<<endl;
cout<<"i= "<<dec<<i<<endl;
cout<<"i= "<<hex<<i<<endl;
cout<<"i= "<<oct<<i<<endl;

cin>>oct>>i;
cout<<i<<endl;
cout<<"i= "<<dec<<i<<endl;
cout<<"i= "<<hex<<i<<endl;
cout<<"i= "<<oct<<i<<endl;
}

运行结果为:
11
17
i=17
i=11
i=21
11
13
i=11
i

第7行是按8进制输出的。
你可能是希望这一行按10进制输出而非8进制,但由于操作符对流格式的控制是通过修改流的标志位来实现的,所以在你源代码的第10行(包括空行)cout<<"i= "<<oct<<i<<endl; 中,流对象cout中的标志位已经被修改,所以它在下一次输出的时候使用的就是已经被修改后的标志位来进行格式输出,也就是八进制进行输出了。
你可以参考下《C++程序设计语言(特别版)》的第21章。

应该是cout使用的上一次设置的条件输出的,cout<<"i= "<<oct<<i<<endl;