为什么std :: cout没有为我的int8_t数字打印正确的值?

Gra*_*min 12 c++ gdb cout

我有类似的东西:

int8_t value;
value = -27;

std::cout << value << std::endl;
Run Code Online (Sandbox Code Playgroud)

当我运行我的程序时,我得到一个错误的随机值<E5>输出到屏幕,但当我在gdb中运行该程序并使用p value它打印出-27,这是正确的值.有没有人有任何想法?

Cat*_*lus 22

因为int8_t与流相同signed char,并且char不被视为数字.投入到例如int16_t

std::cout << static_cast<int16_t>(value) << std::endl;
Run Code Online (Sandbox Code Playgroud)

你会得到正确的结果.

  • 因为int16_t的类型可能不是整数(如流所理解的那样),所以您应该使用int大小写。 (2认同)