📜  C++中的数据类型范围及其宏(1)

📅  最后修改于: 2023-12-03 15:14:03.646000             🧑  作者: Mango

C++中的数据类型范围及其宏

在C++中,有多种数据类型用于存储不同的数据,它们不仅有区别的数据类型名称,而且有不同的数据类型限制和范围。下面将介绍主要的C++数据类型及其宏。

基本数据类型
char类型

char类型用于存储单个字符,其取值范围为-128至127或0至255,具体取决于编译器实现。在<climits>头文件中,你可以找到CHAR_MINCHAR_MAX宏,这些宏可用于获取char类型的最小和最大值。

#include <iostream>
#include <climits>

int main() {
    std::cout << "char类型的最小值: " << (int)CHAR_MIN << std::endl;
    std::cout << "char类型的最大值: " << (int)CHAR_MAX << std::endl;
    return 0;
}

输出:

char类型的最小值: -128
char类型的最大值: 127
bool类型

bool类型用于存储布尔值,它只有两个可能的值:truefalse。在<cstdbool>头文件中,你可以找到truefalse宏,它们分别用于表示bool类型的true和false。

#include <iostream>
#include <cstdbool>

int main() {
    std::cout << "true的值是: " << true << std::endl;
    std::cout << "false的值是: " << false << std::endl;
    return 0;
}

输出:

true的值是: 1
false的值是: 0
整数类型

C++中有四种整数类型,它们使用的位数和范围有所不同。

short类型

short类型是一种有符号的整数类型,使用16位表示,其取值范围为-32768至32767。在<climits>头文件中,你可以找到SHRT_MINSHRT_MAX宏,这些宏可用于获取short类型的最小和最大值。

#include <iostream>
#include <climits>

int main() {
    std::cout << "short类型的最小值: " << SHRT_MIN << std::endl;
    std::cout << "short类型的最大值: " << SHRT_MAX << std::endl;
    return 0;
}

输出:

short类型的最小值: -32768
short类型的最大值: 32767

int类型

int类型是一种有符号的整数类型,使用32位表示,其取值范围为-2147483648至2147483647。在<climits>头文件中,你可以找到INT_MININT_MAX宏,这些宏可用于获取int类型的最小和最大值。

#include <iostream>
#include <climits>

int main() {
    std::cout << "int类型的最小值: " << INT_MIN << std::endl;
    std::cout << "int类型的最大值: " << INT_MAX << std::endl;
    return 0;
}

输出:

int类型的最小值: -2147483648
int类型的最大值: 2147483647

long类型

long类型是一种有符号的整数类型,使用32位或64位表示,其取值范围为例子2,-9223372036854775808至9223372036854775807。在<climits>头文件中,你可以找到LONG_MINLONG_MAX宏,这些宏可用于获取long类型的最小和最大值。

#include <iostream>
#include <climits>

int main() {
    std::cout << "long类型的最小值: " << LONG_MIN << std::endl;
    std::cout << "long类型的最大值: " << LONG_MAX << std::endl;
    return 0;
}

输出:

long类型的最小值: -9223372036854775808
long类型的最大值: 9223372036854775807

long long类型

long long类型是一种有符号的整数类型,使用64位表示,其取值范围为-9223372036854775808至9223372036854775807。在<climits>头文件中,你可以找到LLONG_MINLLONG_MAX宏,这些宏可用于获取long long类型的最小和最大值。

#include <iostream>
#include <climits>

int main() {
    std::cout << "long long类型的最小值: " << LLONG_MIN << std::endl;
    std::cout << "long long类型的最大值: " << LLONG_MAX << std::endl;
    return 0;
}

输出:

long long类型的最小值: -9223372036854775808
long long类型的最大值: 9223372036854775807
浮点类型

C++中有两种浮点类型:floatdouble。它们使用不同的位数来存储浮点数,因此具有不同的取值范围和精度。

float类型

float类型是一种单精度浮点类型,使用32位表示,其取值范围和精度较低。在<cfloat>头文件中,你可以找到FLT_MINFLT_MAX宏,这些宏可用于获取float类型的最小和最大值。

#include <iostream>
#include <cfloat>

int main() {
    std::cout << "float类型的最小值: " << FLT_MIN << std::endl;
    std::cout << "float类型的最大值: " << FLT_MAX << std::endl;
    return 0;
}

输出:

float类型的最小值: 1.17549e-38
float类型的最大值: 3.40282e+38

double类型

double类型是一种双精度浮点类型,使用64位表示,其取值范围和精度较高。在<cfloat>头文件中,你可以找到DBL_MINDBL_MAX宏,这些宏可用于获取double类型的最小和最大值。

#include <iostream>
#include <cfloat>

int main() {
    std::cout << "double类型的最小值: " << DBL_MIN << std::endl;
    std::cout << "double类型的最大值: " << DBL_MAX << std::endl;
    return 0;
}

输出:

double类型的最小值: 2.22507e-308
double类型的最大值: 1.79769e+308
扩展数据类型

扩展数据类型是C++11引入的新类型,它们提供了更好的可移植性和可靠性,适合于处理大型数据和高性能计算。

std::int8_t, std::int16_t, std::int32_t, std::int64_t

<cstdint>头文件中,你可以找到int8_tint16_tint32_tint64_t类型,这些类型用于精确控制整数类型的大小和符号。这些类型确保了它们在不同的平台上的大小和精度是相同的。

#include <iostream>
#include <cstdint>

int main() {
    std::cout << "int8_t类型的大小: " << sizeof(int8_t) << "字节" << std::endl;
    std::cout << "int16_t类型的大小: " << sizeof(int16_t) << "字节" << std::endl;
    std::cout << "int32_t类型的大小: " << sizeof(int32_t) << "字节" << std::endl;
    std::cout << "int64_t类型的大小: " << sizeof(int64_t) << "字节" << std::endl;
    return 0;
}

输出:

int8_t类型的大小: 1字节
int16_t类型的大小: 2字节
int32_t类型的大小: 4字节
int64_t类型的大小: 8字节
std::uintptr_t

uintptr_t类型是一种无符号整数类型,其大小足以容纳指针类型。在<cstdint>头文件中,你可以找到uintptr_t类型,这个类型的主要作用是在涉及内存操作时提供一种可移植的类型。

#include <iostream>
#include <cstdint>

int main() {
    int* p = NULL;
    std::uintptr_t int_addr = (std::uintptr_t)p;
    std::cout << "指针类型对应的uintptr_t类型的size: " << sizeof(int_addr) << std::endl;
    return 0;
}

输出:

指针类型对应的uintptr_t类型的size: 8
总结

本文总结了C++中常用的数据类型及其宏,涵盖了基本数据类型和扩展数据类型。了解这些类型的功能和使用方法可以使编程更加高效和准确。