rwa*_*ace 10 c ctype undefined-behavior c11
传统上,严格来说,它是一个错误,传递signed char给ctype.h谓词,因为它们只定义为-1到255,所以-128到-2最终可能会在数组边界外读取.
signed char
ctype.h
这是否曾经被修复,或者您是否仍然严格地说必须使用unsigned char以避免在现代版本的C中出现未定义的行为?
unsigned char
Sha*_*our 11
你是否仍然严格地说必须使用unsigned char来避免在现代版本的C中出现未定义的行为?
是的,从C11标准草案部分7.4 字符处理<ctype.h>第1段说(强调我的):
7.4
标头声明了几个用于分类和映射字符的函数.198)在所有情况下,参数都是一个int,其值应表示为unsigned char或者等于宏EOF的值.如果参数具有任何其他值,则行为未定义.
这也适用于草案C99标准,您可以在同一部分找到它.
归档时间:
12 年,3 月 前
查看次数:
333 次
最近记录:
11 年,5 月 前