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

C++中获取int最大与最小值(补)

上文中,我们学习了C++中获取int最大与最小值的两种方法:C++库和移位运算,这篇文章将解决在移位运算中遇到的各种报错,并提出一种新的生成int最值的方法

上文链接:http://t.csdnimg.cn/cn7Ad

移位运算取最值常见报错

DevC++报错
Line 35: Char 57: runtime error: signed integer overflow:-2147483648 - 1 cannot be represented in type 'int' 
(solution.cpp) 
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior prog_joined.cpp:44:57
源码
return int(max(min(sign*ans, (long long)((1<<31)-1)), (long long)(1<<31)));
原因&解决方法

这个错误提示表明在程序中发生了有符号整数溢出。具体来说,-2147483648 - 1 这个表达式导致了一个无法在类型 int 中表示的结果。

在 C++ 中,int 类型的取值范围通常是从 -21474836482147483647(这是32位系统中的标准范围),因此 -2147483648 - 1 将导致溢出,得到的结果 -2147483649 不能用 int 类型表示。

为了避免这种溢出,可以考虑使用更大的数据类型来保存结果,例如 long long 类型。修改代码如下:

return int(max(min(sign*ans, (long long)((1LL<<31)-1)), (long long)(1<<31)));

十六进制取int最值

直接上代码

	cout<<"int_max: 0x7FFFFFFF	"<<0x7FFFFFFF<<endl;cout<<"int_min: 0x80000000	"<<int(0x80000000)<<endl;

输出

我个人感觉这种方法更易于理解,也更方便运用

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

相关文章:

  • 一个开源的工具类轮子是怎么造出来的
  • 零基础学Java第二十二天之迭代器 Iterator
  • 微服务架构-异步消息传递设计模式
  • 基于SSM的大学生兼职管理系统
  • leetcode刷题记录:前缀和
  • TENT: FULLY TEST-TIME ADAPTATION BY ENTROPY MINIMIZATION--论文笔记
  • Java期末复习指南(1):知识点总结+思维导图,考试速成!
  • OpenMV学习笔记1——IDE安装与起步
  • C++设计模式|结构型 适配器模式
  • 视频码流分析工具
  • 记一次重定向问题(浏览器安全)解决
  • 【传知代码】transformer-论文复现
  • 大模型日报|今日必读的 13 篇大模型论文
  • Python 魂斗罗的音效和动漫效果
  • Raylib 绘制自定义字体的一种套路
  • C++学习笔记(21)——继承
  • DOS学习-目录与文件应用操作经典案例-more
  • android 在 Activity 的 onCreate 中获取View 的宽高
  • Pod进阶——资源限制以及探针检查
  • XSS---DOM破坏
  • 2024电工杯数学建模B 题:大学生平衡膳食食谱的优化设计
  • LeetCode 1542.找出最长的超赞子字符串:前缀异或和(位运算)
  • LLM企业应用落地场景中的问题概览
  • 基于灰狼优化算法优化支持向量机(GWO-SVM)时序预测
  • C++中获取int最大与最小值
  • 学习通高分免费刷课实操教程
  • 缓存降级
  • PyQt6--Python桌面开发(32.QMenuBar菜单栏控件)
  • golang创建式设计模式---工厂模式
  • 高精度定位平板主要应用在哪些领域