isdigit(c) - 输入变量应该是什么数据类型?
简介:
何时使用基于字符的输入时,确定给定输入是否是数字至关重要。 isdigit() 函数是用于此目的的常用工具,但它提出了一个问题:输入变量应该是字符 (char) 还是整数 (int)?
字符输入和流State:
Cin 用于读取字符输入。但是,在使用输入之前检查流是否有效至关重要。如果流关闭,cin 可能会返回而不修改输入变量,使其处于未初始化状态。
isdigit() 合约和实现:
C 函数 isdigit() 需要一个整数争论。这种设计源于原始的 C 函数 getchar(),它返回一个 int 来指示字符代码和错误状态。因此,isdigit() 假定输入是一个 unsigned char 转换为 int。
Char 的有符号性:
在 C 中,普通 char 可以是有符号的,也可以是无符号的,具体取决于关于编译器的实现。在大多数情况下,它是签名的。这在使用 getchar() 和 isdigit() 系列函数时引入了兼容性问题。
signed char 中的负值可能与 EOF 指示符值冲突,导致潜在的重叠和未定义的行为。为了避免这种情况,应该调用 isdigit(),并将输入强制转换为(无符号字符)。
代码示例:
<code class="c++">#include <iostream> #include <ctype.h> int main() { char c; cout << "Please enter a digit: "; cin >> c; if (isdigit((unsigned char)c)) cout << "You entered a digit" << endl; else cout << "You entered a non-digit value" << endl; return 0; }</code>
以上是`isdigit(c)` 是为 `char` 或 `int` 输入设计的吗?详细检查。的详细内容。更多信息请关注PHP中文网其他相关文章!