检查变量是否使用is_signed签名

con*_*boy 2 c++ c++17

我想检查变量是否已签名.我找到了一个名为is_signed的类模板,但我不能使用它,因为我是C++的新手.如何检查变量是否已签名?

#include <iostream>
#include <cmath>

int main() {
    // the following short initialization is on purpose
    short price {10u};
    std::cout << std::is_signed<price>::value << '\n';
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Sta*_*nny 8

is_signed- 像许多其他结构一样,是对类型进行检查的一种方法 - 但不是对变量进行检查.您可以使用它decltype来获取变量的基础类型.

std::cout << std::is_signed<decltype(price)>::value << '\n'; //-> 1
Run Code Online (Sandbox Code Playgroud)

另外 - is_signed定义于<type_traits>和不定义<cmath>.


正如评论中已经提到的那样; 如果您的目的是简单地查看变量是正数还是负数,那么您将不需要任何库实用程序.

分别使用或获取信息.当然,这些只是运行时操作.price > 0price < 0

  • @Red.Wave 和 C++17 方式更简单:`cout &lt;&lt; std::is_signed_v&lt;decltype(price)&gt;;` (2认同)