两者所分配的内存的大小不同,因此有着不同的取值范围。short int的长度是2字节,所以它所能表达的范围在2的15次方减1到负的2的15次方。如果一个整数超过2的15次方,也就是32768就会溢出而变成复数。int的长度是4字节,所以当值超过2的31次方减1,也就是21亿5千万的时候才会溢出,能表达的范围就比short要宽。long int的长度是8字节,所以它可以表达至2的63次方减1,也就是9.22乘以10的18次方。当然,前提是你不是用Windows系统,在Windows下长整型和整型没有区别,都是4字节,在其他平台,如Linux或Mac下才是8字节,这点和Java不同。
只存在精度问题(长整形的取值范围大于短整形)
两位数能表示0~99,一位数能表示0~9,就是这样的区别,呵呵