【问题标题】:Why return type of isdigit() in C++ is int instead of boolean为什么 C++ 中 isdigit() 的返回类型是 int 而不是 boolean
【发布时间】: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++


【解决方案1】:

我问过自己同样的问题,现在我想知道为什么,请有人解释...我正在使用字符/字符串并偶然发现了这个问题,如果它是数字,为什么不返回 true,否则返回 false?

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-09
  • 1970-01-01
  • 1970-01-01
  • 2014-08-02
  • 1970-01-01
相关资源
最近更新 更多