【C++系列15】c++的正无穷和负无穷

本文介绍在C++中如何使用特定值来初始化数组的最大值max和最小值min。对于int类型,通常采用INT_MAX作为正无穷,INT_MIN作为负无穷;对于double类型,则使用DBL_MAX作为正无穷,而负无穷则表示为-DLB_MAX。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正无穷和负无穷

求数组的max和min的时候都需要假设初始值为正无穷或者负无穷,当然也可以随意从数组中取一个值作为初始值,通常取第一个。
在c++中怎么表示正无穷和负无穷呢?

如果是int,可以用INT_MAX表示正无穷,INT_MIN表示负无穷,需要包含limits.h。
如果是double,可以用DBL_MAX表示正无穷,-DBL_MAX表示负无穷(注意不是DBL_MIN),需要包含float.h。

不明白为什么不都放到limits.h的头文件中。


### 实现C++负无穷大的赋值 在C++中,可以通过IEEE 754标准下的浮点数操作来表示正无穷负无穷大。`std::numeric_limits` 提供了一种标准化的方式来获取特定类型的特殊数值,例如最小值、最大值以及无穷大等[^1]。 对于双精度浮点数 `double` 类型,可以使用如下方式设置其为负无穷: ```cpp #include <limits> #include <iostream> int main() { double negativeInfinity = -std::numeric_limits<double>::infinity(); std::cout << "Negative Infinity: " << negativeInfinity << std::endl; return 0; } ``` 上述代码通过 `-std::numeric_limits<double>::infinity()` 来创建一个负无穷大的值,并将其存储到变量 `negativeInfinity` 中[^2]。 需要注意的是,在某些情况下可能需要验证某个值是否为无穷大或负无穷大。这可以通过 `std::isinf` 函数完成,该函数返回布尔值以指示给定的值是否为无穷大。以下是检测负无穷大的方法: ```cpp #include <cmath> // For std::isinf #include <iostream> bool isNegativeInfinity(double value) { return (value < 0 && std::isinf(value)); } int main() { double testValue = -std::numeric_limits<double>::infinity(); if (isNegativeInfinity(testValue)) { std::cout << "The value is Negative Infinity." << std::endl; } else { std::cout << "The value is not Negative Infinity." << std::endl; } return 0; } ``` 这里利用了 `<cmath>` 头文件中的 `std::isinf` 函数配合条件判断确认值是否小于零从而进一步判定是否为负无穷大[^3]。 #### 注意事项 - 使用 `std::numeric_limits<T>::infinity()` 需要确保编译器支持 C++11 或更高版本。 - 对于单精度浮点数 `float` 同样适用以上逻辑只需替换对应的类型即可。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值