C++ 中的 is_unsigned 模板


在本文中,我们将探讨 C++ STL 中 std::is_unsigned 模板的工作原理、语法和示例。

is_unsigned 是属于 <type_traits> 头文件的一个模板。此模板用于检查给定类型 T 是否为无符号类型。

什么是 C++ 中的无符号数据类型?

无符号数据类型是我们用来识别值不会为负的值,如学号、随机数 ID 等。

要将一种类型设为无符号类型,我们使用关键字 unsigned 作为数据类型的词首,例如:

unsigned int;

unsigned float;

语法

template <class T>is_unsigned;

参数

该模板可仅拥有类型 T 的参数,并检查 T 是否为无符号类型。

返回值

如果给定类型为无符号类型,则返回布尔值 true;如果给定类型不是无符号类型,则返回 false。

示例

Input: is_unsigned<unsigned int>::value;
Output: True

Input: is_unsigned<int>::value;
Output: False

示例

实时演示

#include <iostream>
#include <type_traits>
using namespace std;
class TP {
};
enum TP_1 : int {};
enum class TP_2 : int {};
int main() {
   cout << boolalpha;
   cout << "checking for is_unsigned:";
   cout << "\nint:" << is_unsigned<int>::value;
   cout << "\nTP:" << is_unsigned<TP>::value;
   cout << "\nTP_1:" << is_unsigned<TP_1>::value;
   cout << "\nTP_2:" << is_unsigned<TP_2>::value;
   return 0;
}

输出

如果我们运行上述代码,它会生成以下输出:

checking for is_unsigned:
Int: false
TP: false
TP_1: false
TP_2: false

示例

实时演示

#include <iostream>
#include <type_traits>
using namespace std;
int main() {
   cout << boolalpha;
   cout << "checking for is_unsigned:";
   cout << "\nfloat:" << is_unsigned<float>::value;
   cout << "\nSigned int:" << is_unsigned<signed int>::value;
   cout << "\nUnsigned int:" << is_unsigned<unsigned int>::value;
   cout << "\ndouble:" << is_unsigned<double>::value;
   return 0;
}

输出

如果我们运行上述代码,它会生成以下输出:

checking for is_signed:
Float: false
Signed int: false
Unsigned int: true
Double: false

更新于:2020 年 3 月 23 日

190 次浏览

启动您的 职业生涯

完成课程,获得认证

开始
广告
© . All rights reserved.