如何正确比较 char 和 0x85?
How to compare char with 0x85 correctly?
C++ 编程。
我有来自 winsock recv 缓冲区的 char* 输出。像这样比较我有点问题。我有 char a.
if(a == 0x85)
不起作用,但是
if(a == -123)
相同的(来自调试器)工作..
对不起我的英语。
尝试
if ( a == (char)0x85 )
您的代码不起作用,因为 a
将被转换为 int
,因为在 ==
的右侧有一个 int
类型的表达式。如果 a
确实是 (char)0x85
,并且 char
是 signed char
(在所有平台上可能不是这种情况),那么 a
是负数,因此 (int)a
是负数,因此不等于 0x85
。
把右手边变成char
类型的表达式,祝你开心每一天! ;)
C++ 编程。 我有来自 winsock recv 缓冲区的 char* 输出。像这样比较我有点问题。我有 char a.
if(a == 0x85)
不起作用,但是
if(a == -123)
相同的(来自调试器)工作.. 对不起我的英语。
尝试
if ( a == (char)0x85 )
您的代码不起作用,因为 a
将被转换为 int
,因为在 ==
的右侧有一个 int
类型的表达式。如果 a
确实是 (char)0x85
,并且 char
是 signed char
(在所有平台上可能不是这种情况),那么 a
是负数,因此 (int)a
是负数,因此不等于 0x85
。
把右手边变成char
类型的表达式,祝你开心每一天! ;)