如何用十六进制表示负char值?

Ati*_*liz 0 c hex char signedness

以下代码

char buffer[BSIZE];
...
if(buffer[0]==0xef)
...
Run Code Online (Sandbox Code Playgroud)

给编译器警告"由于数据类型的范围有限,比较始终为false".当我将支票更改为时,警告消失了

if(buffer[0]==0xffffffef)
Run Code Online (Sandbox Code Playgroud)

这感觉非常违反直觉.char以十六进制检查特定字节值的正确方法是什么?(除了使其无符号)

Pau*_*l R 6

有什么不对:

if (buffer[0] == '\xef')
Run Code Online (Sandbox Code Playgroud)