深入理解C/C++数据类型:浮点、布尔、标准整数及结构体打包
1. 浮点型数字
在系统编程中,浮点型数字使用频率较低,但我们仍有必要对其进行简要探讨。浮点型数字通过降低精度来增大可存储值的范围。例如,浮点型可以存储像1.79769e+308这样的数值,这是整数类型(即使是 long long int
)无法做到的。不过,当对这个极大值减1时,数值可能不会发生变化,因为浮点型在表示如此大的数值时,无法保持与整数相同的粒度。
浮点型的另一个优点是能够表示小于整数的数值,这在处理复杂数学计算时非常有用。但在系统编程中,大多数内核为避免浮点错误,很少使用浮点型,这也导致很少有接受浮点值的系统调用。
主要有三种浮点型: float
、 double
和 long double
。以下是查看它们字节大小、最小值和最大值的代码示例:
#include <iostream>
int main(void)
{
auto num_bytes = sizeof(float);
auto min = std::numeric_limits<float>().min();
auto max = std::numeric_limits<float>().max();
std::cout << "num bytes: " << num_bytes << '\n';
std::cout << "m