怎样比较如下:比较无符号字符= 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