
在C/C++语言中,int和long int的所占的字节数与编译器有关。
不过现在常用的编译器多认为int和long int相同,均为4字节,short为2字节,char为1字节。
如果只输入int,它是可以包含以上三种形式。
不同的语言不太一样,例如在Pascal中integer为2字节,byte为1字节,而longint为4字节。
建议您最好参考您的编译器的具体帮助,以得到更准确的信息。
使用前最好sizeof(int) 看看当前编译器如何定义的。
依据程序编译器的不同,int定义的字节数不同。(数据占用内存储器的大小不同)
常用的单片机编译器,如KEIL下,51类单片机的C语言中,int代表2个字节(16位);如果是32位RAM处理器的C语言中,则int代表4个字节(32位)
PIC单片机的PICC中8位系列单片机的C语言里int表示16位。
而不少PC端软件的编译器则会根据 *** 作系统或处理器(如64位XP)把int定义为8字节(64位)
所以在多平台上编程的人员需要在使用时注意。
扩展资料:
在一般的电脑中,int占用4字节,32比特,
“long long int”在C语言中是64位长整型数据类型。
“long long int”在C语言中可以简写为“long long”,作为“long”和“int”数据类型的强化版数据类型,它能支持的整数范围是-2^63到2^63-1。而先前的“long”是32位长整型数据类型,整数范围仅能支持到-2^31至2^31-1。
“long long int”和“unsigned long long int”都是在C99标准中才被引进的。
扩展资料:
C99标准引入的主要新特性:
1、对编译器限制增加了,比如源程序每行要求至少支持到 4095 字节,变量名与函数名的要求支持到 63 字节 (extern 要求支持到 31)。
2、增加了新关键字 restrict,inline,_Complex,_Imaginary,_Bool。
3、支持 long long,long double _Complex,float _Complex 这样的类型。
4、持了不定长的数组。数组的长度就可以用变量了。声明类型的时候呢,就用 int a[] 这样的写法。不过考虑到效率和实现,这玩意并不是一个新类型。所以就不能用在全局里,或者 struct union 里面,如果你用了这样的东西,goto 语句就受限制了。
5、相较于C89标准,C99标准新增了一种结构体/数组的初始化方式,名叫designated initializers。
6、支持 16 进制的浮点数的描述。
7、增加了一个内置的局部静态字符数组变量 __func__ ,可以用于得到当前函数的函数名。
8、取消了不写函数返回类型默认就是 int 的规定。
参考资料来源:百度百科-C99
它们都是数据类型的一种,区别就在与取值范围,和bit大小不一样,针对不同取值,应用不同的数据类型变量。
整型(INTEGER)数据是不包含小数部分的数值型数据,用字母I表示,整型数据只用来表示整数,以二进制形式存储。
短整型的二进制位长是16,长整型的是32位。就是说长整型可以表示位数更多的整数。短整型所能表示的整数的值域为-32768~32767。
长整型则为-2147483648~2147483647。例如,如果有个数为32780,那么它只能用长整型表示,而不能用短整型表示。
长整型是程序设计中数据类型的一种表现方式,通常用long 表示长整型,long 有符号64位整数 范围是-2^63-2^63 -1 Int64unsigned long 无符号64位整数 0-2^64-1 UInt64。
整型是计算机中的一个基本的专业术语。整型值可以用十进制,十六进制或八进制符号指定,前面可以加上可选的符号(- 或者 +)。是一种智能的计算方式。
int 是 C 语言的基本整数类型,可以满足我们处理一般数据的需求。C 语言还提供了四个可以修饰 int 的关键字:short、long、signed,以及 unsigned。利用这四个关键字,C 语言标准定义了以下整数类型:
short int(可简写为 short),和 int 一样,也是有符号整数
long int(简写:long),有符号整数
long long int(简写:long long),C99 标准添加的类型,有符号整数
unsigned int(简写:unsigned),无符号整数,不能表示负数
unsigned long int(简写:unsigned long),无符号整数,不能表示负数
unsigned short int(简写:unsigned short),无符号整数,不能表示负数
unsigned long long int(简写:unsigned long long), C99 添加的类型,无符号整数
所有没有标明 unsigned 的整数类型默认都是有符号整数
参考资料:
这是默认的类型提升引起的问题。
第一个例子里的表达式u+i里,long long的类型比unsigned 的类型大,所以这里u会被转换成long long,u+i的结果就如输出
第二个例子的表达式里u+i里,u的类型比int大,所以i=-42会转换成unsigned。-42转换成无符号就是一个很大的值(4294967254),u+i就是输出结果了。
以下是默认类型提升的规则
同一句语句或表达式如果使用了多种类型的变量和常量(类型混用),C 会自动把它们转换成同一种类型。以下是自动类型转换的基本规则:
1 在表达式中,char 和 short 类型的值,无论有符号还是无符号,都会自动转换成 int 或者 unsigned int(如果 short 的大小和 int 一样,unsigned short 的表示范围就大于 int,在这种情况下,unsigned short 被转换成 unsigned int)。因为它们被转换成表示范围更大的类型,故而把这种转换称为“升级(promotion)”。
2 按照从高到低的顺序给各种数据类型分等级,依次为:long double, double, float, unsigned long long, long long, unsigned long, long, unsigned int 和 int。这里有一个小小的例外,如果 long 和 int 大小相同,则 unsigned int 的等级应位于 long 之上。char 和 short 并没有出现于这个等级列表,是因为它们应该已经被升级成了 int 或者 unsigned int。
3 在任何涉及两种数据类型的 *** 作中,它们之间等级较低的类型会被转换成等级较高的类型。
4 在赋值语句中,= 右边的值在赋予 = 左边的变量之前,首先要将右边的值的数据类型转换成左边变量的类型。也就是说,左边变量是什么数据类型,右边的值就要转换成什么数据类型的值。这个过程可 能导致右边的值的类型升级,也可能导致其类型降级(demotion)。所谓“降级”,是指等级较高的类型被转换成等级较低的类型。
呵呵,int站的是一个机器字,就是说根据电脑硬件的不同而不同,关于机器字是什么?查一下就知道啦。long在16微机上怎么占32位,这个很容易实现,看过微机原理的都知道,可以利用高地位去存。
在C语言中,int即整型类型,long int等同于long,为长整型类型。
二者区别与编译器相关。
1 16位编译器。
int占2字节,范围为-32768~32767
long int占4字节,范围为-2147483648~2147483647
2 32位编译器。
int 和long均占4字节,范围均为-2147483648~2147483647
3 64位编译器。
int 占4字节,范围为-2147483648~2147483647
long因平台实现不同而不同,有4字节,6字节和8字节三种。可以打印sizeof(long)查看。
下面给你例举3种方法:
一、通过基本类型强制转为,因Java的基本类型之间可以相互强转
Long l = new Long(33);
long l1 = llongValue();
int i = (int) l1;
Systemoutprintln(i);
二、可以toString()方法先转为字符串,然后再用IntegerparseInt转为int类型
Long l = new Long(33);
String s = ltoString();
int i = IntegerparseInt(s);
Systemoutprintln(i);
三、 Long的api中提供了一个intValue方法,可以转为int
Long l = new Long(33);
Systemoutprintln(lintValue());
java50提供自动装箱拆箱,Integer与int不需强转,程序会自动转换,long和Long也是一样
所以,可以这么干
Long l1 = 100L;
long l2 = l1;
int i1 = (int)l2;
Integer i2 = i1;
另一种根据Integer的api有IntegervalueOf()和new Integer();可以接受int或者String类型
把Long类型转换成int或者String类型就可以了
Long l1 = 100L;
String str = l1toString();
Integer i1 = IntegervalueOf(str);
Integer i2 = new Integer(str);
int i3 = i2;
以上就是关于int和long int占用的内存不一样吗全部的内容,包括:int和long int占用的内存不一样吗、long long int 是神马。。。是C语言里面的东西,、int和long有什么区别等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)