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

 我来答
南北浮生
推荐于2019-09-09 · TA获得超过1.4万个赞
知道答主
回答量:74
采纳率:100%
帮助的人:1.4万
展开全部

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函数

高人仰北谋
推荐于2017-09-10 · TA获得超过3404个赞
知道大有可为答主
回答量:2259
采纳率:86%
帮助的人:783万
展开全部
从C语言的内部处理机制来说,int型数超出范围(溢出)被认为是一个正常现象,只会产生错误的计算结果或逻辑错误,而不会触发数据溢出的异常。因此,为了避免因为整数溢出而产生程序逻辑或计算错误,程序员必须自行检测可能出现的溢出或者确保不会出现数据溢出的情况。
C语言对于int类型数据超出范围的处理,只有一个最简单的原则:截断处理,即超出int位长度范围的高字节被自动截掉。
比如,假设int长度为16位的情况下,以下代码:
int a=0X77FFFFL; /* 由于超出范围,高位的77将被自动截掉,实际的a将会等于0xFFFF */
++a; /* a自增后,将超出范围,高位的1被截掉,实际a=0 */
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ok洛阳水席
2013-05-25 · TA获得超过1839个赞
知道小有建树答主
回答量:580
采纳率:50%
帮助的人:542万
展开全部

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
施瓦辛格
2013-05-25 · TA获得超过566个赞
知道小有建树答主
回答量:459
采纳率:0%
帮助的人:247万
展开全部

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

追问
http://wenku.baidu.com/view/cce9004ab307e87101f696dd.html 此文档里的代码只能计算结果不超过2037位的数。如何再提高?
追答
没有看代码,只知道如果用多个变量来充当一个数应该是可行的吧,当年在51单片机(8位)上计算16位的数就要用两个来算,原理是一样的吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2022-03-06 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3.1万
采纳率:82%
帮助的人:8426万
展开全部

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

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式