Computer >> Máy Tính >  >> Lập trình >> C ++

mẫu is_signed trong C ++

Trong bài viết này, chúng ta sẽ thảo luận về cách làm việc, cú pháp và các ví dụ của mẫu std ::is_signed trong C ++ STL.

is_ sign là một mẫu nằm trong tệp tiêu đề . Mẫu này được sử dụng để kiểm tra xem kiểu T đã cho có phải là kiểu có chữ ký hay không.

Kiểu có chữ ký là gì?

Đây là các kiểu số học cơ bản, có chứa giá trị dấu với chúng. Tất cả các kiểu dữ liệu số học đều có dấu và không dấu.

Giống như chúng tôi muốn hiển thị các giá trị ở dạng phủ định, chúng tôi sử dụng loại có dấu.

Giống như:-1 được ký vào int và -1,009 được ký vào float.

Theo mặc định, tất cả các loại được ký để làm cho chúng không có dấu, chúng tôi phải đặt tiền tố cho loại dữ liệu là không có dấu.

Cú pháp

template <class T> is_signed;

Tham số

Mẫu chỉ có thể có tham số kiểu T và kiểm tra xem T có phải là kiểu có dấu hay không.

Giá trị trả về

Nó trả về một giá trị Boolean, true nếu kiểu đã cho là kiểu Đã ký và false nếu kiểu đã cho không phải là kiểu có dấu.

Ví dụ

Input: is_signed<int>::value;
Output: True

Input: is_signed<unsigned int>::value;
Output: False

Ví dụ

#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_signed:";
   cout << "\nint:" << is_signed<int>::value;
   cout << "\nTP:" << is_signed<TP>::value;
   cout << "\nTP_1:" << is_signed<TP_1>::value;
   cout << "\nTP_2:" << is_signed<TP_2>::value;
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

checking for is_signed:
Int: true
TP: false
TP_1: false
TP_2: false

Ví dụ

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

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

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