C++中long,short,int的具体区别是啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中long,short,int的具体区别是啥?相关的知识,希望对你有一定的参考价值。
占内存长度不同和取值范围不同int 32位 -2^32---2^32-1
short 16位 -32768~32767
32位系统:long是4字节32位,int是4字节32位
64位系统:long是8字节64位,int是4字节32位 参考技术A 不同长度的整数类型,编译器可以根据硬件特性自主选择合适的长度,C/C++标准没有具体规定每种类型的长度,只规定了short和int的长度至少是16位,也就是2个字节。long至少为32位,也就是4个字节。并且short不得长于int,int不得长于long。
不同的编译器(如g++,vc++,turbo)、不同位数的相同操作系统(如32与64)、不同的操作系统(如linux与windows) 长度都可能不同 参考技术B 应该是
int 32位 -2^31---2^31-1
C++ short/int/long/long long 等数据类型大小
数据类型 | 字节大小 | 数值范围 |
---|---|---|
short int (短整型) | 2 字节 | -32 768 ?+32 767 |
unsigned short int (无符号短整型) |
2 字节 | 0 ?+65 535 |
int (整型) | 4 字节 | -2 147 483 648 ?+2 147 483 647 |
unsigned int (无符号整型) | 4 字节 | 0 ?4 294 967 295 |
long int (长整型) | 4 字节 | -2 147 483 648 ?+2 147 483 647 |
unsigned long int (无符号长整型) |
4 字节 | 0 ?4 294 967 295 |
long long int (超长整型) | 8字节 | -9 223 372 036 854 775 808~9 223 372 036 854 775 807 |
unsigned long long int (无符号超长整型) |
8字节 | 048 446 744 073 709 551 615 |
注意,超长整型和无符号超长整型是在 C++11 中引入的。
1、整形:表示整数、字符和布尔值的算数类型的合称;
2、字符类型有两种:char和wchar_t,char类型通常是单个字节,wchar_t类型用于扩展字符集,比如汉字和日语,这些字符集不能用单个char表示;
3、short、int、long类型都表示整形,一般来说(32位机器),short占16位,两字节;int占32位(根据系统而定,32位机下为4个字节),四个字节;long在32位机器上和int一样,也是四个字节(所以感觉C++ Primer中这块的概念有误,1字=2字节 才对)
4、默认情况下,int、short、long都是带符号的,即signed;
5、和其他整形不同,char有三种表示方式:普通char、unsigned char、signed char。虽然有三种不同的类型,但是只有两种表示方式。可以使用unsigned char或者signed cahr表示char类型,具体使用哪种方式由编译器而定。
6、整型的赋值:当一个超出范围的值被赋给一个变量时,会怎么赋值呢?答曰:由编译器来决定,但一般都是取该值对该类型取值数目求模后的值(但不能保证所有编译器都会这样处理),e.g. 试图将336存储到8位的unsigned char中,实际赋值为80,因为80是336对256求模后的值,同理,如果把-1赋给8位的unsigned char,那么结果是255,因为255是-1对256求模后的值;
7、浮点数float、double、long double分别表示单精度、双精度、扩展精度浮点数,一般float为32位,double为64位,long使用96位或者128位。类型的取值范围决定了浮点数所含的有效数字位数,对于实际程序来说,float类型只能保证6位的有效数字,而double类型至少可以保证10位的有效数字。
8、C++的标准并没有规定每种类型占多少位,只是说 “sizeof(long)>=sizeof(int)>=sizeof(short)”,所以具体的字节数都是根据编译器来确定的。
————————————————
以上是关于C++中long,short,int的具体区别是啥?的主要内容,如果未能解决你的问题,请参考以下文章