大多数C编译器都使用带符号的字符。大多数C库将EOF定义为-1。
尽管我是一名长期的C程序员,但我从未将这两个事实放在一起,所以为了强大的国际软件的利益,我会请求一些帮助来说明其含义。
这是我到目前为止所发现的:
getchar() == (unsigned char) 'µ'
。<ctype.h>
函数旨在处理EOF和预期的无符号字符。任何其他负面输入都可能导致越界寻址。这个评估是否正确?如果是这样我错过了其他的问题?
完全披露:我今天遇到了一个越界索引错误,当时将非ASCII字符输入到isspace()中,并且在我的旧代码中实现了潜伏的错误数量,这些都让我感到害怕和烦恼。因此这个令人沮丧的问题。
答案 0 :(得分:2)
基本执行字符集保证是非负的 - C99中的准确措辞是:
如果基本执行字符集的成员存储在
char
中 对象,它的值保证是非负的。