[英]Compare unsigned char = 0x00 and signed char = '00'
我如何比較以下內容:
unsigned char a = 0x00;
char b = '0'; // signed char
如何編寫與a和b匹配的比較/轉換?
謝謝!
'0'
和0x00
不是同一回事。 '0'==0x30
和'\\0'==0x00
。
就像每個人都說的那樣,他們不是一回事。 但是,如果必須將它們比較相等,則可以使用詞法轉換:
#include <iostream>
#include <boost/lexical_cast.hpp>
bool compare(unsigned char val, char c) // throws if c is not a digit!
{
return val == boost::lexical_cast<int>(c);
}
int main() {
unsigned char a = 0x00;
char b = '0';
std::cout << std::boolalpha << compare(a, b) << '\n';
}
您是否按照標簽所示使用C ++進行編程? 在這種情況下,您可能更喜歡:
static_cast<char>(a) == b
a == static_cast<unsigned char>(b)
當然,請注意從無符號到有符號的轉換中可能丟失的信息。
編輯:忽略了其他人建議的觀點。 是的,0x00 =='\\ 0'和0x30 =='0'。 但是比較的手段仍然存在。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.