簡體   English   中英

產生十六進制值錯誤的整數

[英]integer producing hex values error

我的程序發生了一些奇怪的事情。 我目前在程序中使用很多線程,因此無法在此處粘貼所有內容。

但是,這是我的問題:

int value = 1000;
std::cout << value << std::endl;
//output:  3e8

知道為什么我的輸出是3e8嗎?

用什么命令將其修復以打印十進制值?

提前致謝! :)

其他一些線程將std::cout流的默認輸出基數更改為十六進制。 請注意,1000 10 = 3e8 16 ,即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問題

可能是另一個線程將輸出更改為十六進制輸出。 我懷疑這些流是否是線程安全的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM