And*_*ith 5 c char character-encoding visual-studio-2008
我在代码审查期间发现了一些令人困惑的代码,我有点困惑.做了一些研究我发现了这种情况.我写了这个代码示例来突出问题
char d = '©';// this is -87,the copyright symbol , (actually its 169 unsigned)
if(ispunct(d)) // will assert.
{
}
Run Code Online (Sandbox Code Playgroud)
所以,修复bug的程序员做了以下事情:
char d = '©';// this is -87,the copyright symbol , (actually its 169 unsigned)
if(ispunct((unsigned char)d)) // will not assert, because it will be 169.
{
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,是否可以使char未签名?理想情况下,我不会使用charUnicode字符来避免这类问题,但软件很老,不会很快重新设计.
我正在使用Visual Studio 2008. ispunct()可以找到ctype.h.
小智 7
在这种情况下,演员是正确的.来自man ispunct:
在
ispunct()功能试验对于除空间的任何打印字符(' ')或字符,其isalnum(3)是true.参数的值必须可表示为unsigned char或的值EOF.
| 归档时间: |
|
| 查看次数: |
338 次 |
| 最近记录: |