質問の仕方がわかりませんが、最善を尽くします。
単に
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 なのですか?
質問の仕方がわかりませんが、最善を尽くします。
単に
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 なのですか?
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;
}
ストリームの基数が 16 進数に設定され、10 進数に戻らないためです。
cout<<hex<<&a<<dec<<endl; // back to dec immediately, as it's done usually.