如何获得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);
  • 07-26 05:26