c语言中int型的数超出范围会是怎样的?

如题所述

C语言中int的取值范围为:-2147483648 ~ 2147483647。超过了这个范围进行赋值,C源代码是无法通过编译的。

下面给出简单的测试代码:

# include <stdio.h>

int main(void)

{

int i = 100000000000000000000000000000000000000000000;

printf("%d\n", i); 

return 0;

}

可以看到编译器提示这个定义类型的赋值太大了,导致无法编译成功。

扩展资料

C/C++编程语言中,int表示整型变量,是一种数据类型,用于定义一个整型变量,在不同编译环境有不同的大小,不同编译运行环境大小不同。在32/64位系统中都是32位,范围为-2147483648~+2147483647,无符号情况下表示为0~4294967295。

原因:总位数位32位,符号位占用1位,且每一位只能表示两种状态。int数值位最大只允许31位 = 32 - 符号位 ,所以说:2的31次方 = 2147483648得出了int函数的最大取值范围。

参考资料

百度百科_int函数

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-10
从C语言的内部处理机制来说,int型数超出范围(溢出)被认为是一个正常现象,只会产生错误的计算结果或逻辑错误,而不会触发数据溢出的异常。因此,为了避免因为整数溢出而产生程序逻辑或计算错误,程序员必须自行检测可能出现的溢出或者确保不会出现数据溢出的情况。
C语言对于int类型数据超出范围的处理,只有一个最简单的原则:截断处理,即超出int位长度范围的高字节被自动截掉。
比如,假设int长度为16位的情况下,以下代码:
int a=0X77FFFFL; /* 由于超出范围,高位的77将被自动截掉,实际的a将会等于0xFFFF */
++a; /* a自增后,将超出范围,高位的1被截掉,实际a=0 */
第2个回答  2013-05-25

int 型的范围是-32768到32767(但是注意了!这是以前书上写的,但现在已经将int型改为32位的了,也就是说其表示范围和增大了)
而int型包含了 有无符号整型 即 int, unsigned int  。有无符号短整型 unsigned short int,short int .有无符号长整型 long int,unsiged int.
它们的表示范围均有不同。( 在相同的一类型下  无符号的整型比有符号的整型表示的范围要大。)
注意int型改成32位的了,int最大可以表示2147483648。2147483648+1=-2147483647,楼主可以看一下补码的原理,就懂了!

写个程序,你试验一下:

#include<iostream> 
using namespace std; 
int a[1000000]; 
int main() 
{
int i,j=0;
for(i=0;i<1000;i++)
{
j+=10000000;
printf("%d\n",j);
if(j<0)
break;
}
j=2147483648+1;
printf("%d\n",j);
system("PAUSE"); 
}

32位是很大的,除非你去算天文数字1024!之类的东西,不然很难越界!


2013 5 25 14:52 3L

第3个回答  2013-05-25

如图所示的两种情况,会被截断,不会影响其它的变量:(将数转为2进制要高32位,后边的仍掉)

追问

此文档里的代码只能计算结果不超过2037位的数。如何再提高?

追答

没有看代码,只知道如果用多个变量来充当一个数应该是可行的吧,当年在51单片机(8位)上计算16位的数就要用两个来算,原理是一样的吧。

第4个回答  2022-03-06

C 语言中 int 型的数,超出范围会是怎样的?

会溢出,产生错误的结果。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网