dw做网站怎么让文字移动,直播网站app下载,电子商务网站建设a卷,网站的策划分析上文中#xff0c;我们学习了C中获取int最大与最小值的两种方法#xff1a;C库和移位运算#xff0c;这篇文章将解决在移位运算中遇到的各种报错#xff0c;并提出一种新的生成int最值的方法
上文链接#xff1a;http://t.csdnimg.cn/cn7Ad
移位运算取最值常见报错
Dev…上文中我们学习了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)((131)-1)), (long long)(131)));
原因解决方法
这个错误提示表明在程序中发生了有符号整数溢出。具体来说-2147483648 - 1 这个表达式导致了一个无法在类型 int 中表示的结果。
在 C 中int 类型的取值范围通常是从 -2147483648 到 2147483647这是32位系统中的标准范围因此 -2147483648 - 1 将导致溢出得到的结果 -2147483649 不能用 int 类型表示。
为了避免这种溢出可以考虑使用更大的数据类型来保存结果例如 long long 类型。修改代码如下
return int(max(min(sign*ans, (long long)((1LL31)-1)), (long long)(131))); 十六进制取int最值
直接上代码 coutint_max: 0x7FFFFFFF 0x7FFFFFFFendl;coutint_min: 0x80000000 int(0x80000000)endl;
输出 我个人感觉这种方法更易于理解也更方便运用