在C语言中,(实现定义的?)字符参数对于islower()和isupper()怎么可能都是真的?书上是这么说的

在C语言中,(实现定义的?)字符参数对于islower()和isupper()怎么可能都是真的?书上是这么说的,c,function,ctype,C,Function,Ctype,Mike Banahan在C语言书的同一段中给出了以下两行关于islower()和isupper()的内容: 岛下(内部c) 如果c是小写字母,则为True。同样正确 对于实现定义的不返回的字符集 来自iscentrl、isdigit、ispunct或isspace中任何一个的真实结果。在 C语言环境中,此额外字符集为空 isupper(内部c) 如果c是大写字母字符,则为True。阿尔索 对于实现定义的一组字符,如果这些字符不 从iscentrl、isdigit、ispunct或isspace

Mike Banahan在C语言书的同一段中给出了以下两行关于islower()和isupper()的内容:

岛下(内部c)

如果c是小写字母,则为True。同样正确 对于实现定义的不返回的字符集 来自iscentrl、isdigit、ispunct或isspace中任何一个的真实结果。在 C语言环境中,此额外字符集为空

isupper(内部c)

如果c是大写字母字符,则为True。阿尔索 对于实现定义的一组字符,如果这些字符不 从iscentrl、isdigit、ispunct或isspace中的任何一个返回真实结果。 在C语言环境中,这个额外的字符集是空的


你能解释一下,如果一个字符不能从iscentrl、isdigit、ispunct或isspace中的任何一个返回真正的结果,那么它如何为这两个函数产生真正的结果?据我所知,一个字符可以是小写,也可以是大写,而不是两者都是(假设我们所说的字符集有这样的区别……大多数欧洲语言都有)。

书中的引文并没有声称对于同一个符号,isupper和islower必须同时返回true。他们只说如果使用了C以外的其他语言环境,那么可能会有一些额外的符号,isupper或islower(或两者)可以返回true

考虑到C标准根据isupper和islower定义了isalpha

isalpha函数测试isupper或isalpha所针对的任何字符 岛主是真的

虽然同一地区的特定符号可能同时被视为上下符号。也就是说,所有四种组合都是可能的。比如说

isupper: false, islower: false
isupper: true, islower: false
isupper: false, islower: true
isupper: true, islower: true
C标准有一个脚注:

200)函数islower和isupper分别测试true或false 对于这些附加字符中的每一个;所有四种组合都是 可能的


书中的引用并没有声明isupper和islower必须同时为同一符号返回true。他们只说如果使用了C以外的其他语言环境,那么可能会有一些额外的符号,isupper或islower(或两者)可以返回true

考虑到C标准根据isupper和islower定义了isalpha

isalpha函数测试isupper或isalpha所针对的任何字符 岛主是真的

虽然同一地区的特定符号可能同时被视为上下符号。也就是说,所有四种组合都是可能的。比如说

isupper: false, islower: false
isupper: true, islower: false
isupper: false, islower: true
isupper: true, islower: true
C标准有一个脚注:

200)函数islower和isupper分别测试true或false 对于这些附加字符中的每一个;所有四种组合都是 可能的

对于“C”语言环境以外的语言环境,它可以返回true(对两个函数),这可以定义其他字符:-

在这种情况下:-

isalpha、isupper和islower返回非零(前提是这些字符使iscentr、isdigit、ispunct和isspace返回零)

作为参考,您可以在此处更好地理解此依赖关系:-

它可以为“C”区域设置以外的区域设置返回true(对两个函数),这可以定义其他字符:-

在这种情况下:-

isalpha、isupper和islower返回非零(前提是这些字符使iscentr、isdigit、ispunct和isspace返回零)


作为参考,您可以在这里更好地理解这种依赖关系:-

如果一个字符在iscentl、isdigit、ispunct或isspace中返回true时,在islower或isupper中也返回true,我会更加惊讶@PeterSchneider我理解这一部分,因为如果一个字符对你提到的任何函数都返回true,那么它就不是字母表了……如果一个字符对iscentrl、isdigit、ispunc或isspace中的一个返回true,对islower或isupper也返回true,我会更加惊讶@PeterSchneider这一部分我理解,因为如果一个字符在你提到的任何函数中返回true,它将不是一个字母表…请再详细一点,特别是在你答案最后一行的上下文中的“isalpha”。请再详细一点,特别是“isalpha”在你答案最后一行的上下文中。谢谢你的链接。谢谢你的链接。