所以我有wchar_t tempc;
。我想看看它是否在unicode范围000000-00007F。
这是我尝试比较值的方式:
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?
答案 0 :(得分:1)
在C ++中,以0开头的常量值是八进制数。因此,它不能包含8和F.十六进制常量应该写0x7F
。只需写下:
if ((tempc < (wchar_t)0) || (tempc > (wchar_t)0x7F)) { ...