c++ - 有没有简单的方法来检查一个值是否不能被另一种类型安全地表示?
问题描述
如题。
例如,假设我们有一个int8_t值“-10”,我想在我的程序中动态检查(运行时值)这个确切的整数值是否-10
可以被uint32_t变量安全保存std::trunc
。在这种情况下,由于这是一个负值,所以它不能被无符号类型保存。如何在 C++ 代码中执行此操作?因为如果我使用正常的比较方式,隐式转换会破坏如下的输入信息。有没有其他简单的方法可以做到这一点?
int8_t v = -10;
if (v <= std::numeric_limits<uint32_t>::max() &&
v >= std::numeric_limits<uint32_t>::min()) {
// It will be true here.
}
我想找到一种合理的方法来检查目标类型的可用值范围是否可以完全覆盖源类型的所有可用值。意思是显式转换后,结果值应该和原来的完全一样。
解决方案
推荐阅读
- django - 在 django 模板中无法在 if 块中显示内容
- microsoft-graph-api - 使用 GraphServiceClient 的字典是线程安全的吗?
- mongodb - 聚合函数两个匹配查找 mongodb
- python - 预处理推文,删除 @ 和 # ,消除停用词并从 python 列表中删除用户
- reactjs - 如何典型化嵌套对象?
- android - 获取第二个 Onclicklistener 值
- c# - 绘制 Windows 10 字幕按钮的问题
- typescript - Typescript 可以根据字段存在(未定义/不存在)而不是值来保护/区分吗?
- r - 带有exams2moodle的mchoice问题的真/假按钮
- javascript - API 标头参数返回“SyntaxError: Unexpected token”