为什么cout << hex satement仅使其余部分以十六进制格式打印

Har*_*ris 1 c++ hex cout

我有以下代码片段来打印整数的十六进制值,

int i=10;
cout<<hex<<i<<endl;
Run Code Online (Sandbox Code Playgroud)

a在控制台上打印十六进制值10 ,

但是在下一行我需要打印另一个变量的十进制值,比如

  int j=11;
  cout<<j<<endl;
Run Code Online (Sandbox Code Playgroud)

但它也打印十六进制值11,b如果我用 cout<<dec<<j<<endl;它打印十进制值.

另外我注意到cout如果cout<<hex之前使用的话,所有打印都是变量的十六进制值.

所以我的问题是它的正常行为?<<dec如果我<<hex之前使用过一次,是否需要使用?

use*_*846 6

是的,你必须使用deccout十进制值,因为hex是一个"粘"机械手(如顺便说许多其它操纵) -它将停留直到被更改.