C++如何检查函数是否正在接收无符号整数?

标签 c++ int unsigned

我有一个函数声明为:

void foo(unsigned int x)

我如何检查 foo() 没有收到负数? 我希望如果我调用 foo(-1) 会抛出异常, 但当然,因为 x 会自动转换为无符号,所以我无法检查它的正性,例如:

if not(x>=0){ do_something();};

或类似的检查。

最佳答案

确实没有什么好的方法可以做到这一点,但是你可以通过一些技巧来做到这一点:

1) 声明一个未定义的更好匹配:

void foo(unsigned int x) {
  //do something
}

void foo(int x);

2) 使用typeid判断类型。

关于C++如何检查函数是否正在接收无符号整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12443690/

相关文章:

c - 为什么 "a && (b = 5/a)"不将 "5/a"分配给 "b"?

c++ - 为什么 C++ 编译器合成函数(例如默认构造函数)是内联的?

c++ - 无效使用非静态数据成员 ‘lasd::BinaryTreeVec<int>::treeVec’

c++ - 为什么 is_integral_v<string> 是真的?

c# - 为什么 char 数组在控制台上显示内容,而 string 和 int 数组不在 c# 中?

在C中将二进制字符串转换为int

c++ - 由于四舍五入,计算 1 到 100 之间数字的程序永远不会猜测 "100"

c - C 中的有符号和无符号

c++ - 在 C++ 中将文件读入二进制数组

c++ - 查找长 vector 的最小值和最大值