0

質問の仕方がわかりませんが、最善を尽くします。
単に

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

しかし、16進数でcoutした後、出力が異なります

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

では、なぜ最後の出力が 13 なのですか?

4

2 に答える 2

5

19がであるため0x13、ストリームに数値を 16 進数で出力するように指示しました。

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

ストリームの基数が 16 進数に設定され、10 進数に戻らないためです。

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