c++输出ios::basefield为啥是112

ios::basefield是用来清理位值的一个fmtflag类的对象,其作用是清理掉ios_base::hex,ios_base::oct和ios_base::dec上上设置的位,也就是复位。112的二进制是1110000,也就是说,把cout这个iostream对象里的一个标识器的第5.6.7位置0.而5.6.7位置1时分别表示cout<<hex;cout<<oct;cout<<dec;

举例:

cout.setf (ios_base::dec);//意思是,把标识器的某位置1,效果就是以后的输出都是十进制

cout.setf (ios_base::hex,ios_base::basefield);//意思是把5,6,7位全部置0,然后把16位输出的位置1,效果就是以后都输出16进制。