C语言一个运算问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 12:59:09
c语言中为什么执行这句语句时最大位数不能大于6位大于6位后运行时不是运算执行后的真正结果
{
int a,b,sum;
a=100000;
b=20;
sum=a+b;
printf ("sum =%d\n",sum);
}

楼上的回答是错误的
int是有符号数,范围是-32768~32767
而unsigned int无符号整型,得范围0~65535
这里a=100000超出了这两个数据类型的表示范围,建议使用long
long与long int是一回事,因为long是4个字节,又是有符号数最大表示范围为-2147483648~2147483647

输出方式改一下
printf("sum = %ld\n",sum);

int型的范围最大是65535,你定义long int型就ok了

一般你都用double型就不会有溢出问题了.

TC2下,只需要用long就可以。

以后计算连long也溢出了就加unsigned就可以,比如unsigned long i;

溢出了,用long