在C或C ++中是否有办法检查用户提供的数字是否超出整数类型的范围?
例如,让我们假设我们使用的是16位有符号整数,范围为-32768到32767。
如果用户输入55555进入程序,这将被包装成一个负数,这样如果你使用的函数可以接受任何数字,结果就会出错。
在C或C ++中是否有办法确定用户提供的数字是否在整数类型的范围内?
更新:我在一个简单的减法程序中使用数字,它接受两个数字并从第一个减去第二个。
答案 0 :(得分:5)
如果您使用strtol
之类的内容,如果发生溢出,则会将errno
设置为ERANGE
答案 1 :(得分:3)
如果用户在程序中输入55555,则会将其换行为负数
并非总是如此。这取决于你如何阅读这个数字。例如,如果您使用operator>>
,该值将不包装,则会被拒绝。
在C或C ++中是否有办法确定用户提供的数字是否在整数类型的范围内?
在C ++中,只需使用operator>>
:
#include <iostream>
int main() {
signed short int i;
std::cin >> i;
if(std::cin)
std::cout << "You entered a valid number!\n";
else
std::cout << "Aw c'mon, play by the rules.\n";
}
答案 2 :(得分:0)
在C或C ++中是否有办法检查是否提供了数字 user是否在整数类型的范围之外?
这取决于您使用的功能(strtol
可以做到这一点)。查看文档。
答案 3 :(得分:0)
int和uint之间的唯一区别是如何解释它们。您的问题没有解决方案,如果它对您考虑切换到浮点参数,检查值和类型转换非常重要。更新:我认为你想要另一个程序员提供的运行时检查函数参数值,而不是控制台输入。