c++ - 获取 qint64 数字和标量的最大值?

标签 c++

如何获取 qint64 数字和标量的最大值?

以下内容无效。我猜是因为 std::max 既不接受也不返回 qint64。

qint64 fromTimeStamp = -1;
qint64 fromTimeStampNonNegative = std::max(fromTimeStamp, 0);

最佳答案

问题不在于qint64不知道std::max 。它只是 long long 的 typedef 。这不起作用的真正原因是您指定了两种不同的模板类型:

std::max 的(简化)签名是

template <typename T>
T max(T a, T b);

如果你用你的参数调用它,你有 2 种不同的类型 T 。一方面,qint64 ,另一方面 int (根据 0 文字确定)。这不起作用,因为编译器要求两个参数具有相同的类型。

您所要做的就是确保它们是或明确指定模板类型。以下所有示例都将这样做并因此有效:

  • std::max(fromTimeStamp, 0ll);
  • std::max(fromTimeStamp, static_cast<qint64>(0));
  • std::max<qint64>(fromTimeStamp, 0);

关于c++ - 获取 qint64 数字和标量的最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53629272/

相关文章:

c++ - 用基数样条做一个循环

c++ - vector 扩展和线程例程

c++ - 我的算法只将第一个字写入文件?

C++ boolean 求值

c++ - 是否可以在 Visual Studio 中的 Win32 C++ 应用程序的控制台中进行调试?

c++ - 如何使用字符串返回一个指向对象的唯一指针 vector 的迭代器来查找对象?

c++ - 用于 C 密码学的快速伪随机数生成器

c++ - 将 std::set 分配给 2D std::vector of ints

c++ - 如果没有嵌套的 do-while,for 循环不会按预期运行

c++ - 支持两个具有不同语义的整数构造函数