Ich habe bei der Codeüberprüfung einige verwirrende Codes gefunden und bin etwas verwirrt. Bei meinen Recherchen bin ich auf diese Situation gestoßen. Ich habe dieses Codebeispiel geschrieben, um das Problem zu verdeutlichen
char d = '©';// this is -87,the copyright symbol , (actually its 169 unsigned)
if(ispunct(d)) // will assert.
{
}
Der Programmierer, der den Fehler behoben hat, hat also Folgendes getan:
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.
{
}
Meine Frage ist, ob es OK ist, die char
ohne Vorzeichen ? Idealerweise würde ich nicht verwenden char
aber verwenden Sie ein Unicode-Zeichen, um diese Art von Problem zu vermeiden, aber die Software ist sehr alt und wird nicht in absehbarer Zeit überarbeitet werden.
Ich verwende Visual Studio 2008. ispunct()
finden Sie in ctype.h
.