我正在使用 typedef float engtype
和 typedef double engtype
快速在 float
和 double
之间切换测试。例如,当我这样做时
engtype rmwt = 20.75;
engtype Rgas = 8314.28 / rmwt;
编译器提示从 double
转换为 engtype
可能会丢失或截断数据。为了让警告消失,我这样做了
engtype rmwt = 20.75;
engtype Rgas = static_cast<engtype>(8314.28) / rmwt;
这似乎有点可笑。我在谷歌上搜索了一种使其默认为 engtype
的方法,但没有找到任何东西。 typedef
的这种用法不正确吗?我应该如何处理这些警告?我知道我可以忽略它们,但应该有一种“正确”的方法来清除它们。
最佳答案
您无法更改 8314.28
的含义:它是一个 double
,句点。
您可以做的是使用关联的用户定义文字完成您的 typedef :
engtype operator ""_eng (long double d) {
// Add a cast here if the compiler still complains
return d;
}
获取:
auto rmwt = 20.75_eng;
auto Rgas = 8314.28_eng / rmwt;
关于C++ 使用 typedef 避免类型转换警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32002352/