【发布时间】:2014-06-04 08:17:34
【问题描述】:
在标题为 Warning generated due wrong strcmp parameter handling 的问题之后,似乎有一些关于标准实际上保证字符类型的值表示的问题。
问题
这看起来不错,但标准是否保证 (1) 将始终产生 true?
char unsigned * p1 = ...;
char * p2 = reinterpret_cast<char *> (p1);
*p1 == *p2; // (1)
【问题讨论】:
-
char const unsigned确实是一种不寻常的类型命名方式。 -
你为什么要使用
unsigned char(保存一个字符而不是一个小整数)而不是char? -
@Walter 有些人发现将字节表示为范围 [0,255] 比范围 [-128,127] 更直观,包括我自己。此外,明确地显示某些内容是字节(无符号字符)而不是字符(字符)可能会很好。
-
@iFreilicht 同意。但我认为他想将其解释为一个字符而不是一个字节。
-
@walter 在显示为 char 和 bytes (%02X) 时有助于避免符号扩展问题。
标签: c++ c++11 language-lawyer c++14