当前位置: 首页 > news >正文

C++中获取int最大与最小值

不知道大家有没有遇到过这种要求:“返回值必须是int,如果整数数超过 32 位有符号整数范围 [−2^31,  2^31 − 1] ,需要截断这个整数,使其保持在这个范围内。例如,小于 −2^31 的整数应该被固定为 −2^31 ,大于 2^31 − 1 的整数应该被固定为 2^31 − 1

题目链接:. - 力扣(LeetCode)

若已知int能表示的最大值与最小值,本题直接如下截断即可

return max(min(ans, int_max), int_min);//ans表示未经处理正确答案

那么问题来了,如何获取int的最值?

1.通过C++已有库

在C++中,可以使用<limits>头文件中的std::numeric_limits模板类来获取int类型的最大值和最小值。下面是示例代码:

#include <iostream>
#include <limits>int main() {// 获取int类型的最大值int max_int = std::numeric_limits<int>::max();std::cout << "最大值:" << max_int << std::endl;// 获取int类型的最小值int min_int = std::numeric_limits<int>::min();std::cout << "最小值:" << min_int << std::endl;return 0;
}

这段代码中,std::numeric_limits<int>::max()返回int类型的最大值,std::numeric_limits<int>::min()返回int类型的最小值。

2.通过移位运算

#include <iostream>int main() {// 计算int类型的最大值int max_int = (1 << 31) - 1;  // 或者使用 0x7FFFFFFFstd::cout << "最大值:" << max_int << std::endl;// 计算int类型的最小值int min_int = -(1 << 31);     // 或者使用 0x80000000std::cout << "最小值:" << min_int << std::endl;return 0;
}

这段代码中,(1 << 31) - 1计算出32位中除了符号位外全为1的二进制数,即011...1,即为int类型的最大值。而-(1 << 31)计算出32位中符号位为1,其余位为0的二进制数,即100...0,即为int类型的最小值。

http://www.lryc.cn/news/352059.html

相关文章:

  • 学习通高分免费刷课实操教程
  • 缓存降级
  • PyQt6--Python桌面开发(32.QMenuBar菜单栏控件)
  • golang创建式设计模式---工厂模式
  • 高精度定位平板主要应用在哪些领域
  • conda使用常用命令
  • 22-LINUX--多线程and多进程TCP连接
  • 像素级创意:深入浅出PixelCNN图像合成技术
  • MyBatisPlus使用流程
  • 爬虫技术升级:如何结合DrissionPage和Auth代理插件实现数据采集
  • go 微服务框架kratos错误处理的使用方法及原理探究
  • AI播客下载:Dwarkesh Podcast(关于AI的深度访谈)
  • C++11function包装器的使用
  • Vue3判断变量和对象不为null和undefined
  • C++进阶:C++11(列表初始化、右值引用与移动构造移动赋值、可变参数模版...Args、lambda表达式、function包装器)
  • Vue.js Promise 与 async/await 的比较
  • Qt 报错总结 No suitable kits found
  • ThingsBoard如何拆分前后端分离启动
  • 加载页面 跳转 新页面 vue
  • 中国主要城市房价指数数据集(2011-2024)
  • Creating Server TCP listening socket *:6379: listen: Unknown error
  • JUnit5标记测试用例
  • 在Windows10中重命名文件和文件夹的6种方法,有你熟悉和不熟悉的
  • Go源码--sync库(1)sync.Once和
  • 头歌OpenGauss数据库-I.复杂查询第3关:统计总成绩
  • LeetCode hot100-47-N
  • 中北大学软件学院计算机网络实验一
  • 扩散模型学习1
  • 【HTML】制作一个跟随鼠标的流畅线条引导页界面(可直接复制源码)
  • vue3父子组件、跨级组件之间的通信之provide, inject -- 通俗易懂