gpt4 book ai didi

c - 为什么像 isdigit() 这样的函数会返回一个随机的非零值?

转载 作者:行者123 更新时间:2023-12-05 01:23:10 24 4
gpt4 key购买 nike

在 The C Programming Language 这本书的第二版中,据说像 isdigit 这样的函数可以为 true 返回任何非零值。为什么像 isdigit 这样的函数会为 true 返回一个随机的非零值,而不是像 1 这样的标准化值(就像逻辑表达式一样)?此外,在我的测试中,isdigit 函数的结果始终为 2048 表示真。这是完全随机的还是与某些东西有关,或者这个 2048 值对每个人都一样吗?

我使用的编译器:GCC 12.1.0

最佳答案

isdigit 的常见实现以及相关例程,例如isalpha是使用一个由字符值索引的数组,其中表的每个元素都是属性的一组位标志。如果字符是数字,则设置一位;如果字符是字母,则设置一位;如果字符是空白字符,则设置一位,等等。

然后 <ctype.h>功能可以在很大程度上实现为 table[x] & mask ,其中掩码选择测试所需的位。

如果字符不在测试集中,则结果为零,如果是,则结果为非零。因为非零值是被测试的标志,所以它不是一,除非适用的标志恰好使用位零,值为一。例如,如果用于表示数字的位是第 10 位,值为 1024,则 isdigit将始终返回零或 1024。

这足以满足字符分类功能的目的。添加仅返回 1 或 0 的要求将需要额外的步骤,因此会造成浪费,因此未将此要求添加到规范中。

关于c - 为什么像 isdigit() 这样的函数会返回一个随机的非零值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72813356/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com