INT怎么判断超出界限的值——C/C++ 雨点打透心脏的1/2处 2021-11-22 12:12 267阅读 0赞 C/C++现在的 int 一般默认的是32位,即 2^(32-1),但有时候需要判断是否超出界限,因为最大值INT\_MAX(INT\_MIN)就是这么多,超出界限的值不可能以超出界限的规定方式展示,所以我们需要一个取巧的方式。 ## 1、我们要先了解超出界限的值是怎么计算的 ## **1、我们就不得不了解一下原码、反码、补码** 因为 1 Byte(字节)= 8 bit,所以我就以 2^(8-1)=127作为最大值为例,范围(-128~+127) 正整数部分: (1)原码、反码和补码都一样 负整数部分: (1)原码和反码的相互转换:符号位不变,数值位按位取反 (2)原码和补码的相互转换:符号位不变,数值位按位取反,末位再加1 **基本运算:(都是基于补码进行计算)** 先把原码转换为补码进行运算,然后在把补码转换为原码,就是最终结果,超过符号位的进位被舍弃。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjEwOTAxMg_size_16_color_FFFFFF_t_70] #include<stdio.h> #include<limits.h> int main(){ int a=0x7fffffff; // 16进制最大值,(是数字0不是字母O) int b=017777777777; // 8进制最大值,(是数字0不是字母O) //int c=1111111111111111111111111111111; // 2进制最大值 int d=INT_MAX; // int 最大值 int e=a+1; int f=INT_MAX+INT_MAX; printf("%d\n",a); printf("%d\n",b); //printf("%d\n",c); printf("%d\n",d); printf("%d\n",e); printf("%d\n",f); return 0; } ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjEwOTAxMg_size_16_color_FFFFFF_t_70 1] ## 2、如何判断超出界限的值 ## INT\_MAX(INT\_MIN) 头文件 `#include<limits.h>` 超出界限的值,因为最大为INT\_MAX(INT\_MIN),计算超出的都会舍弃掉多余的部分,所以其他值都会在(INT\_MIN~INT\_MAX)之间,所以不能直接判断,需要先判断一部分 设定一个数为:x 把他改为字符串:Stirng xs int rev = 0,i=0; while (xs != '\0') { pop = xs[i]; i++; if (rev > INT_MAX/10 || (rev == INT_MAX / 10 && pop > 7)) return 0; if (rev < INT_MIN/10 || (rev == INT_MIN / 10 && pop < -8)) return 0; rev = rev * 10 + pop; } return rev; [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjEwOTAxMg_size_16_color_FFFFFF_t_70]: /images/20211122/0f6da157489b40e8b660b3e38c987079.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjEwOTAxMg_size_16_color_FFFFFF_t_70 1]: /images/20211122/8ffb5a2abb9146b099aea64bd27e56b8.png
相关 新手困惑:Java中的数组超出界限问题 在Java中,当你试图访问一个数组超出其界限的元素时,会抛出`ArrayIndexOutOfBoundsException`异常。 例如,如果你有一个长度为3的数组`int[ 向右看齐/ 2024年10月22日 21:24/ 0 赞/ 21 阅读
相关 浅析Java中数组超出界限的异常处理 在Java中,数组一旦被创建,其长度和元素范围都是固定的。如果试图访问超出数组边界的位置,将会抛出`ArrayIndexOutOfBoundsException`异常。 例如 朱雀/ 2024年10月20日 06:24/ 0 赞/ 19 阅读
相关 初学者:Java中数组超出界限的示例 在Java中,如果尝试访问一个数组超出其界限的位置,将会抛出`ArrayIndexOutOfBoundsException`异常。 下面是一个简单的示例: ```java ﹏ヽ暗。殇╰゛Y/ 2024年09月23日 13:03/ 0 赞/ 43 阅读
相关 新手必解:Java中数组超出界限的异常处理 在Java中,当我们尝试访问一个数组(无论是整数、字符还是对象数组)中的某个超出其范围的位置时,会抛出`ArrayIndexOutOfBoundsException`异常。 向右看齐/ 2024年09月18日 00:21/ 0 赞/ 61 阅读
相关 Java集合框架:添加元素超出界限的问题 在Java的集合框架中,当尝试向超出界限的位置添加元素时,会发生两种常见情况: 1. **`ArrayList`** 或 `LinkedList`: - 当你尝试向一个 Myth丶恋晨/ 2024年09月15日 01:48/ 0 赞/ 54 阅读
相关 Java数组操作:超出界限的访问 在Java中,数组是一个固定大小的内存区域,其索引从0开始。因此,如果你尝试访问一个数组索引超出范围的位置,将会抛出ArrayIndexOutOfBoundsException 旧城等待,/ 2024年09月10日 11:30/ 0 赞/ 56 阅读
相关 mybatis if标签判断int值 项目中使用mybatis,想要使用if标签来判断传入的int值,如果传入值为0,则不分页,否则分页.具体信息如下: dao方法参数:List<TTransRequestEnt 分手后的思念是犯贱/ 2022年06月12日 09:57/ 0 赞/ 257 阅读
相关 判断两个input输入框的值(int) <input type="text" class="" value="" placeholder="" id="input1" name=""> <input 本是古典 何须时尚/ 2022年05月24日 22:13/ 0 赞/ 185 阅读
相关 INT怎么判断超出界限的值——C/C++ C/C++现在的 int 一般默认的是32位,即 2^(32-1),但有时候需要判断是否超出界限,因为最大值INT\_MAX(INT\_MIN)就是这么多,超出界限的值不可能以 雨点打透心脏的1/2处/ 2021年11月22日 12:12/ 0 赞/ 268 阅读
还没有评论,来说两句吧...