short型与int型的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了short型与int型的区别相关的知识,希望对你有一定的参考价值。

Turbo C中他们两个占用大小一样
那为什么还要分成两个
还有
有些编译系统long型与int型大小相同
也为什么要分成两个?
这样的话不就多余了?
注意
我的意思是short既然和int一样长
那么还要short干什么?

最本质的区别在于类型所占的字节数。一般来说,int占四字节,short占两字节。
在C语言中可以用sizeof运算符,获取数据类型或者变量所占的内存字节数。
示例代码如下:
#include <stdio.h>
int main()

printf("%d\t%d\t%d\n", sizeof(int), sizeof(short), sizeof(long));
return 0;
参考技术A 前一时期,微型计算机的字长一般是16位,故以16位存放一个整数,但是整数的范围太小,往往不够用,因此将long定为32位。通常的做法是:把long定为32,把short定为16,而int可以16,也可以32位。 参考技术B C是面向计算机的编程语言,速度和跨硬件是基本的追求,int和机器字长一样,也就是和通用寄存器长度一样,因此速度最优。你可以想象一下,你的程序都用long,结果在16位机上运行,不慢死才怪呢。本回答被提问者采纳 参考技术C short两个字节,long四个字节,int和机器相关,不一定和short和long相同的 参考技术D C++规范里,对int
,short,long定义的标准是:
short至少16位
int至少于short一样长
long至少32位,且至少与int一样长
他们的差别就是在内存里,存储的时候,使用内存空间的大小
因为使用内存空间大小不同,因此他们能够表示的数值的范围也就不一样了.
另外,关于int用多少内存来存储,还要看具体的平台.目前windows下的编译器编译出来,int都是32位的.

short与int

short s1 = 1; s1 = s1 + 1,错误,int不能转换为short.
为什么 short s1 = 1; s1 += 1正确?

s1 += 1跟 s1 = s1 + 1还有区别吗???

因为short只要两个byte,而int是4个byte,你要强制转化的时候如果成功,那么int就会丢失前面的16个Bit这种转换显然是不等价的,是错误的。而在你后面的1因为你没有限定这是一个什么类型的数字,就会根据你前面的s1来自变化。
s1+=1 和你s1 =s1 +1是一样的。
参考技术A += 是运算符的重载

而 a=a+1;的+是 普通运算符

运算符重载后更强大.

比如方法重载,你可以做一些判断在里面.ok本回答被提问者采纳
参考技术B s1 = s1 + 1
1的默认类型是int,你需要对相加后的记过做强制转换
short s1 = 1
系统自动转换了

以上是关于short型与int型的区别的主要内容,如果未能解决你的问题,请参考以下文章

C语言中short与int有啥区别

C语言数据类型中int与short的区别

ACM中关于__int64与long long 的区别

unsigned short int 和 unsigned int 或 unsigned short 有啥区别?

C中的“short int”和“int”有啥区别?

JAVA 中SWITCH 括号里跟啥类型的