int类型变量的取值范围?
前言
在学C语言的时候应该都会先了解各种基本数据类型的初值和它们的取值范围,有些人可能会不太重视这块内容,其实很重要,很多大公司面试的过程中都会问到int的取值范围,溢出之后会怎么样等问题。
在写程序的时候有时候我们将一个很大的int型的数相加一个数,就会发现结果不对。这是为什么呢?
因为这个数超过了int型的取值范围。
C语言中int的取值范围为:-2147483648 ~2147483647
解释如下:int类型在C语言中占4个字节,即32个二进制位。当表示正数时,最高位为符号位(符号位为0),最大的正数是 0111 1111 1111 1111 1111 1111 1111 1111 即2^31 -1 = 2147483647当表示负数时,最高位为符号位(符号位为1),最小的负数是 1000 0000 0000 0000 0000 0000 0000 0000 而在计算机中是以补码的形式存储的,C语言规定 1000 0000 0000 0000 0000 0000 0000 0000 的补码为-2147483648所以C语言中int的取值范围为:-2147483648 ~ 2147483647
我们也可以用程序来查看int型的最大最小值。
#include<stdio.h>
#include<limits.h>
int main(){
int min = INT_MIN;
int max = INT_MAX;
printf("%d %d\n",max,min);
}