怎樣比較如下:比較無符號字符= 0×00和符號字符= '00'
unsigned char a = 0x00;
char b = '0'; // signed char
我怎樣寫的比較/轉換匹配a和b?
謝謝!
怎樣比較如下:比較無符號字符= 0×00和符號字符= '00'
unsigned char a = 0x00;
char b = '0'; // signed char
我怎樣寫的比較/轉換匹配a和b?
謝謝!
像大家說的,他們不是一回事。但是如果你必須等於對它們進行比較,你可以做一個詞彙投:
#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';
}
'0'
和0x00
不是一回事。 '0'==0x30
和'\0'==0x00
。
您是否使用C++進行編程,如您的標記所示?在這種情況下,您可能更願意:
static_cast<char>(a) == b
a == static_cast<unsigned char>(b)
當然,您知道從無符號到有符號轉換中可能會丟失信息。
編輯:忽視了別人的建議。是的,0x00 =='\ 0'和0x30 =='0'。但是比較手段仍然存在。
注意'「0''是不一樣的'」 \ 0'' - 首先是ASCII字符'0 ',它的十六進制值是0x30,而不是0x00。 – 2010-07-09 13:36:15