我在写这篇答案时引用了http://en.cppreference.com/w/cpp/string/byte/tolower#Parameters的内容。
如果字符既不是无符号字符,也不是 EOF,那么其行为未定义。
当我查看添加此短语的编辑历史时,我发现作者的评论如下:
根据 C99 7.4/1,不能将带有负值的有符号字符用于任何 ctype.h 函数。
作者在 C++ 文档中引用了 C99 标准。这是有效的吗?我没有找到关于该函数定义的 C++ 标准,因此必须假定它是有效的。
但这让我担心两个问题:
- 我怎样才能知道 C++ 标准依赖于哪个版本的 C 标准?
- 到处都有关于C 和 C++ 差异的列表。如果我查看 C 标准并参考 C++,我怎么可能知道我正在查看的区域是否已被覆盖?