0

我不知道怎么问,但我尽力了;
简单地

int a = 19;
int& b=a;
cout<<b<<endl;    //Output : 19

但现在输出在 cout 与 hex 之后有所不同

int a = 19;
int& b=a;
cout<<hex<<&a<<endl;     //0031F788
cout<<b<<endl;        //Output : 13

那么为什么最后一个输出是 13 呢?

4

2 回答 2

5

因为19is 0x13,并且您告诉流以十六进制输出数字。

hex是“粘性的”,这意味着它在流对象上保持有效,直到你另有说明,所以dec当你完成它时你应该流式传输:

#include <iostream>
using namespace std;

int main()
{
   int  a = 19;
   int& b = a;

   cout << hex << &a << dec << endl;
   cout << b << endl;
}
于 2013-01-13T16:30:17.547 回答
3

因为流基数设置为十六进制,并且永远不会回到十进制。

cout<<hex<<&a<<dec<<endl; // back to dec immediately, as it's done usually.
于 2013-01-13T16:30:10.153 回答