我有下面的代碼片段打印一個整數的十六進制值,爲什麼COUT <<十六進制的語句,使其餘的打印十六進制格式只
int i=10;
cout<<hex<<i<<endl;
和打印的10 a
在控制檯上的十六進制值很好,
但下一行,我需要打印另一個變量的十進制值,如
int j=11;
cout<<j<<endl;
,但它也打印的11進制值,b
,和如果我用cout<<dec<<j<<endl;
它打印十進制值。
另外我注意到,如果之前使用cout<<hex
,所有cout
都打印變量的十六進制值。
所以我的問題是它的正常行爲?如果我之前使用過<<hex
一次,我需要使用<<dec
嗎?
雅,我相信你要做'<< dec'或'<< hex'如果你想將其切換。如果我沒有記錯的話,你正在做的是設置一個標誌以十六進制或十進制打印出來,並且它將保持該標誌直到它被設置爲別的東西。 –
是的,你必須重置它爲'std :: dec'(技術上清除'std :: ios_base :: basefield'位掩碼,它仍然會爲std :: ios_base :: hex設置位。 – 0x499602D2