isDigit() 意外行为
isdigit() unexpected behaviour?
为什么isdigit
没有按预期工作。 我正在尝试检查输入是否为数字。如果输入是数字,则打印True
否则False
。
#include<stdio.h>
#include<ctype.h>
int main()
{
int h;
printf("Height: ");
scanf("%d", &h);
if (isdigit(h))
printf("True");
else
printf("False");
}
但它总是False
返回。
输入:
高度:福
因为你的期望是不正确的。 isdigit() 被调用到一个字符上,以查看它是否包含十进制数字"0"-"9"。您正在已经是二进制值的 int 上调用它。
你对函数isdigit
的理解有误。 此函数的输入是字符。所以你可以改成这样:
char h;
printf("Height: ");
scanf("%c", &h);
相关文章:
- 在C++中对T*类型执行std::move的意外行为
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- 处理除以零会导致<csignal>意外行为
- vscode下的Arduino代码出现意外编译错误
- 使用++运算符会导致意外的结果
- 套接字读取后,我在缓冲区中看到意外输入
- 更改.cpp程序的输入文件中数据的位置会意外更改输出
- 使用vscode调试时,GDB意外退出
- 此测试()中发生了什么意外过程?为什么总是覆盖 ch[0 1 2..]?
- 尝试将字符串/字符转换为整数会产生意外结果
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- C++标头错误 C2238 意外标记";"
- C++中意外的多头值
- vector.size() 在比较中意外工作
- 使用 malloc() 时出现意外大小
- 多线程程序中出现意外的内存泄漏
- 为什么static_cast基础类型的枚举类int8_t获得意外值?
- 字符串比较中的意外输出
- 我的代码中的意外价值以及我如何修复它
- isDigit() 意外行为