整型数的溢出

#include <stdio.h>

#include <limits.h>
int main()
{
    printf("INT_MAX+1=%d\n",INT_MAX+1);
    printf("INT_MAX+INT_MAX=%d\n",INT_MAX+INT_MAX);
    printf("INT_MIN=%d\n",INT_MIN);
    printf("INT_MIN-1=%d\n",INT_MIN-1);
    printf("INT_MIN+INT_MIN=%d\n",INT_MIN+INT_MIN);
    return 0;
}

运行结果:

INT_MAX+1=-2147483648

INT_MAX+INT_MAX=-2

INT_MIN=-2147483648

INT_MIN-1=2147483647

INT_MIN+INT_MIN=0

请按任意键继续. . .

下面大致说一下产生的结果:

我们以4位二进制为例,4位二进制能表示的最大正整数是:7,能表示的数字

在上面图中,如果3+1,就表示从3开始顺时针走一格,7+1顺时针走一格后变成了-8,7+7顺时针走7格变成了-2,这就是整型数发生了溢出。

所谓溢出,就是因为4位二进制,用补码能表示的最大正整数是7.这样就不难理解上面问题的答案.

时间: 2025-01-06 04:18:42

整型数的溢出的相关文章

C语言整型数据(整数)

整型数据即整数. 整型数据的分类 整型数据的一般分类如下: 基本型:类型说明符为int,在内存中占2个字节. 短整型:类型说明符为short int或short.所占字节和取值范围均与基本型相同. 长整型:类型说明符为long int或long,在内存中占4个字节. 无符号型:类型说明符为unsigned.  无符号型又可与上述三种类型匹配而构成: 无符号基本型:类型说明符为unsigned int或unsigned. 无符号短整型:类型说明符为unsigned short. 无符号长整型:类型

整型数据在不同Python环境中的差异

整型数据在Python3中是没有大小和范围的限制 1 num = 10**100 #表示 10 的 100 次方 2 print(num) 此时输出为正确的答案,10的100次方,即在Python3中,整型是不会溢出的 整型数据在Python2中是有范围的限制 1 num = 10**100 2 print(num) 此时输出为一个错误答案(数据最后一位为 L ),即在Python2中,整型数据过大会溢出 原文地址:https://www.cnblogs.com/ztao4802/p/10080

访问一个绝对地址把一个整型数强制转换 (typecast)为一个指针是合法的

在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66.编译器是一个纯粹的ANSI编译器.写代码去完成这一任务. 解析:这一问题测试你是否知道为了访问一个绝对地址把一个整型数强制转换(typecast)为一个指针是合法的.这一问题的实现方式随着个人风格不同而不同.典型的代码如下: 一个较晦涩的方法是: 建议你在面试时使用第一种方案.答案:

使用指针比较整型数据的大小

该C实例是一个比较简单的实例,但是在该实例中,重点介绍了C语言中比较常用的也是容易出错的指针变量,其中包括指针变量的赋值,指针变量的运算等等.该实例实现了通过使用指针变量来比较3个整形数据,使其从小到大排列,实现比较简单,下面附上我的代码: #include <stdio.h> /** * 通过指针比较三个整数的大小 * @brief main * @return */ /** * 指针,即为变量的地址:指针变量,即数值为 * 指向变量地址的变量 * 指针变量的类型: * 对指针变量的类型说明

编程之美-----在一个整型数组里找出只出现过一次的那两个数

一.一个数组里除了一个数字之外,其他的数字都出现了两次 用异或来解 #include <iostream> using namespace std; int main() { int T; int n,m; while(cin>>T,T){ cin>>n; while(--T){ cin>>m; n=m^n; } printf("%d\n",n); } return 0; } 扩展: 一个整型数组里除了两个数字之外,其他的数字都出现了两次

Java 判断是否为汉字 判断是否为乱码 判断字符串是否为双整型数字 整数 数字

/**  * 判断是否为汉字  *   * @param str  * @return  */ public static boolean isGBK(String str) {  char[] chars = str.toCharArray();  boolean isGBK = false;  for (int i = 0; i < chars.length; i++) {   byte[] bytes = ("" + chars[i]).getBytes();   if (

Java整型数组的最大长度到底有多长?

Java整型数组的最大长度到底有多长? 今天上网查了一下,各种说法都有,这个问题似乎总困扰我们Java初学者,无奈,只好自己试了一下,以下是我的测试代码,如果有错误,还望不吝赐教! 使用eclipse默认的vm arguments,运行以下代码: public static void main(String[] args) {byte[] array=new byte[61858764];// short[] shortArray=new short[30929382];// int[] int

不创建第三方变量对整型数组逆置

以整型数组为例实现逆置 将一个整型数组逆序,如:数组a[5]={1,2,3,4,5},逆序之后数组a的内容变成{5,4,3,2,1}. void SwapNum(int& a, int& b) {  a = a^b;  b = a^b;  a = a^b; } void SwapArray(int *str,int size) {  int i = 0;  for (i = 0; i < size / 2; i++)  {   SwapNum(str[i], str[size - i

华为机试—整型数组中出现次数最多的元素

取出整型数组中出现次数最多的元素,并按照升序排列返回. 要求实现方法: public static int[] calcTimes(int[] num, int len); [输入] num:整型数组: len :输入的整数个数 [返回] 按照升序排列返回整型数组中出现次数最多的元素 [注意]只需要完成该函数功能算法,中间不需要有任何IO的输入输出 示例 输入:num = {1,1,3,4,4,4,9,9,9,10} len = 10 返回:{4,9} #include <iostream>