gpt4 book ai didi

c++ - char 或 wchar_t == -1 是什么意思?

转载 作者:行者123 更新时间:2023-11-28 06:55:44 25 4
gpt4 key购买 nike

在 Visual Studio 中,为什么要将字符的值(以前是 char,现在是 wchar_t)与 -1 的值进行比较?

我有一个项目针对 -1 进行了多项无效检查:

TCHAR ch;
...
if(ch==-1)

Coverity 告诉我“"ch == -1"始终为假,无论其操作数的值如何。”

现在,这最初是为使用 char 值而不是 wchar_t 编写的,并在需要 unicode 支持时进行了升级。我需要弄清楚为什么“char ch;”正在根据 -1 检查,以便我可以对 wchar_t 进行类似的检查。

最佳答案

整数常量EOF通常#defined 为-1。如果这确实是您的代码正在检查的内容(取决于 ch 来自哪里),那么相应的 wchar_t 比较将是 WEOF,并且适当的 Windows TCHAR 宏似乎是 _TEOF .

PS:正如评论中完全正确地指出的那样,如果一个值被转换为 charwchar_t,那么将它与 EOF 进行比较就太迟了WEOF:许多编码使用 char '\xff' 作为有效字母,并且在此类转换后变得与 EOF 无法区分。代码完全错误:变量 ch 需要具有类型 int/wint_t/_TINT 才能进行任何此类比较有效。

关于c++ - char 或 wchar_t == -1 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23205148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com