使用 std::numeric_limits<T>::quiet_NaN() 是一种不好的做法吗?

Arn*_*nzy 1 c++ nan

使用以下函数在查询中搜索匹配项,如果未找到匹配项则返回 NaN:


int64_t Foo::search(const std::string& foo, int64_t t0, ...
if {
...
}
else
  return std::numeric_limits<int64_t>::quiet_NaN();
}
Run Code Online (Sandbox Code Playgroud)

joh*_*ohn 6

std::numeric_limits<T>::quiet_NaN();T仅当是浮点类型且为std::numeric_limits<T>::has_quiet_NaN();true 时才有意义。所以,不,你的代码不是一个好的实践。

参考:https://en.cppreference.com/w/cpp/types/numeric_limits/quiet_NaN

  • @A.Fenzry:你会发现 `std::numeric_limits&lt;int&gt;::has_quiet_NaN()` 是 `false`。 (2认同)
  • @A.Fenzry 没有“int”不是浮点类型,“float”、“double”和“long double”是我认为唯一的浮点类型。 (2认同)