产生十六进制值的整数错误
integer producing hex values error
我的程序发生了一些奇怪的事情。我目前在我的程序中使用了很多线程,不可能将所有内容都粘贴到这里。
然而,这是我的问题:
int value = 1000;
std::cout << value << std::endl;
//output: 3e8
知道为什么我的输出是3e8吗?
修复它以打印十进制值的命令是什么?
提前感谢!:)
std::cout
流的默认输出基数更改为十六进制。请注意,100010=3e816,即1000 == 0x3e8
。
在程序中的某个位置调用,例如:
std::cout << std::hex << value;
已使用。要将输出恢复为正常(十进制),请使用:
std::cout << std::dec;
这里有一个相关的链接,指向在std::cout上输出数字的不同方式。
此外,正如下面的评论所指出的,安全修改cout标志的标准方法如下:
ios::fmtflags cout_flag_backup(cout.flags()); // store the current cout flags
cout.flags ( ios::hex ); // change the flags to what you want
cout.flags(cout_flag_backup); // restore cout to its original state
链接到IO基本标志
正如下面的评论所述,明智的做法是指出,在使用IO流时,最好在线程和流之间进行某种形式的同步,即确保没有两个线程可以同时使用同一个流
这样做可能还会集中流调用,这意味着将来调试这样的东西会容易得多
这是一个SO问题,可能会帮助您
可能是另一个线程在cout上将输出更改为十六进制。我怀疑这些流是否是线程安全的。
相关文章:
- 给定一个整数数组,需要在Max_Heap上运行操作。得到错误"segmentation fault",有什么想法吗?(C++)
- 为什么在我的 main 函数中声明整数后我的整数数组中会出现错误?
- 为什么在将 void 指针转换为整数指针时出现分段错误
- 野牛/flex:计算器将双精度值解释为整数,所以我添加了 YYSTYPE 双精度 #define 但我有多个编译错误
- C++/错误:表达式必须具有整数或无作用域枚举类型
- Qt 错误 iso c++ 禁止指针和整数之间的比较 -permissive
- C++字符串到整数错误值可以反转吗?
- 我在c++中遇到了一个奇怪的错误,其中一个计算2个小整数加法的语句溢出到一个长值中
- (C/C++)fscanf_s从txt文件以字符形式读取数组时缺少整数参数错误
- 自定义哈希表实现-将字符串映射到整数时出现内存错误
- 我需要帮助创建一个评分系统,但它一直给我一个错误,注释掉的整数是给我带来麻烦的部分
- C++ 在方程中使用变量;错误:表达式必须具有整数或无作用域枚举类型及其他
- 谷歌启动2018,测试用例中的整数错误
- 使用递归函数 (c++) 将长字符串转换为整数时输出错误
- 运行时错误:有符号整数溢出:964632435 * 10 无法在类型 'int' 中表示
- C++字符* 到整数错误
- 使用boost multiprecision/mpfr float-字符串不能被解释为有效的整数错误
- 产生十六进制值的整数错误
- 原子整数错误地递增?英特尔 TBB 实施
- Libjson解析整数错误