c语言的困惑

来源:百度知道 编辑:UC知道 时间:2024/06/23 23:59:00
#include "iostream"
main()
{int a,b;
a=30000+30000;
b=500000000+500000000;
printf("%d\n%d",a,b);
system("pause");}

用dev-c++编写以上程序为什么能得到正确的结果呢?
请看这里:b=500000000+500000000; 分明这个数值500000000已超出基本整型的数值范围.那么500000000+500000000相加的值再赋给变量b的话,b还是int类型吗?既然类型都不对了,输出的应该是一个随机数,那为何会输出正确的结果1000000000
郁闷中,有人能告诉我为什么吗?。。。
c语言中的基本整型和短整型的取值范围是-32768至32767之间吗?"我定义的b是int(基本整型)又不是long int(有符号长整型)"

难到那些取值范围过时了,不再这么定义了吗?????

在32位平台上,int的取值范围是:

-4294967296~4294967295
为什么??

我测试到的范围是
max=2147483647
min=-2147483648
我也不知道为什么是这个数??

在32位平台上,int的取值范围是:

-2147483648~2147483647

现在b的计算结果在此范围内,没有越界.

********************************************

-32768~32767是16位平台上的取值,而你的系统应该是32位的.

int类型的宽度和计算机的字长是一样的.

跟编译器有关!