比较 unicode 和 wchar_t C++:`无法找到数字文字运算符 'operator""F'`

Comparing unicode and wchar_t C++ : `unable to find numeric literal operator 'operator""F'`

所以我有一个 wchar_t tempc;。我想看看它是否在 000000-00007F 的 unicode 范围内。

这是我尝试比较值的方式:

if ((tempc < (wchar_t)000000) || (tempc > (wchar_t)00007F)) { ... 

我认为这会将 unicode 值 000000 和 00007F 转换为 wchar_t。但是我收到如下错误:

error: invalid suffix "F" on integer constant
error: invalid digit "8" in octal constant
error: invalid suffix "FF" on integer constant
error: invalid digit "8" in octal constant 

很明显编译器不知道像 00007F 这样的值是 unicode。我在这里的误解是什么?我是否先将它们转换为 unicode(如果是,如何?),然后再转换为 wchar_t?

在 C++ 中,以 0 开头的常量值是八进制数。因此,它不能包含 8 或 F。十六进制常量应写为 0x7F。随便写:

if ((tempc < (wchar_t)0) || (tempc > (wchar_t)0x7F)) { ...