【发布时间】:2022-07-22 21:14:56
【问题描述】:
我正在阅读 isdigit() 函数的 cplusplus 参考资料,从那里得到这个,
int isdigit ( int c );
返回值:如果 c 确实是十进制数字,则返回一个不同于零的值(即 true)。否则为零(即假)。
“不同于零”这个术语表示什么,我的意思是为什么我们不能只坚持 0 或 1。 另外,当我测试这个函数时,它总是返回 1 或 0,那么为什么简单的文档不能说 isdigit 函数返回 1,而不是说“不同于零”。
【问题讨论】:
-
isdigit来自 C。在过去,C 中没有bool类型 -
C 实现返回导致零值与非零值的数学计算输出的情况并不少见。
-
也不需要为所有数字准确返回
1。这些函数通常使用单个查找表来完成,该查找表将所有字符特征编码为整数的不同位;isdigit完全有可能返回表示“它是一个数字”的标志,isctrl返回表示“它是一个控制字符”的标志 -
遗憾的是,该文档具有误导性。它说“如果 c 确实是十进制数字,则值不同于零(即,真)。否则为零(即,假)。” (强调我的)。 “不同于零”并不意味着
true- 它意味着不为零。所以返回 2、18、INT_MAX、-1 都是有效的“不同于零”的返回值(正如@BenVoigt 指出的那样)。 -
@franji1:嗯,true(又名truthy)和
true是不同的,但网站确实说true,因为它很糟糕。
标签: c++