cout hex之后引用的变量不同

时间:2013-01-13 16:26:54

标签: c++

我不知道怎么问,但我尽我所能;
只需

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

但现在输出在带有十六进制的cout之后是不同的

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

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

2 个答案:

答案 0 :(得分:5)

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

hex是“粘性的”,这意味着它在流对象上保持有效,除非你另有说法,所以你应该在完成它之后流dec

#include <iostream>
using namespace std;

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

   cout << hex << &a << dec << endl;
   cout << b << endl;
}

答案 1 :(得分:3)

因为流基设置为十六进制,所以从不回到十进制。

cout<<hex<<&a<<dec<<endl; // back to dec immediately, as it's done usually.