c语言 long x; 这里的long是什么类型啊?占用几个字节?

作者&投稿:氐才 (若有异议请与网页底部的电邮联系)
C语言long是几个字节?~

C语言中long是4个字节,是一种数据类型,有两种表现形式:有符号和无符号。
在有符号中,long的表示数的范围为:-2147483648~2147483647
在无符号中,long的表示数的范围为::0~4294967295

扩展资料:
整型变量可分为以下几类:

基本型
类型说明符为int,根据计算机的内部字长和编译器的版本,在内存中可能占2或4个字节(通常分别在16位机和32位机上),其取值为基本整常数。

短整型
类型说明符为short int或short,在内存中占2个字节,其取值为短整常数。

长整型
类型说明符为long int或long,在内存中占4个字节,其取值为长整常数。
参考资料来源:
百度百科-long
百度百科=整型


一个 long 型变量占 4个字节; 无符号也是4个字节!

由于 一个字节 是 8 位;

一个long 型变量默认的是有符号的,他占 32 位, 但是其中一位表示的是符号;其他31位用来表示数字;
但是无符号的长整形他的32位全部用来表示数字;这就是有符号和无符号的区别;

long指长整型,32位的吧,4字节

long是长整型数据
int是整型数据

在16位机上,int 2byte, long 4byte
32机, int 4,long 4
64 int 4 ,long 8

长整形咯
占几个字节么,试:
printf("%d",sizeof(long));

int和long作为基本的整数类型,取值范围和位数直接相关。如果是n位整数的话,最高位表示符号位,剩下的n-1位以补码形式表示绝对值,因此范围是整数区间[-2^(n-1),2^(n-1))。
int和long并没有明确位数,具体和平台相关(有一点可以确定,sizeof(int)<=sizeof(long))。一般而言,32位机的int是32位的,于是范围是[-2^31, 2^31)也就是[-2147483648, -2147483648)。而非int的位数取决于机器字长外还决定于软件平台(操作系统、编译器)上实现的特定的C语言数据模型(专指整数数据模型,不是数据库里讨论的那个),只是一般32位平台上的long都比较统一(基本上都是LP32),为32位,范围和int一致。(如果是64位平台,除了Windows上的LLP64模型中long是32位外,LP64、ILP64、SILP64的long都是64位)。
另外LS错误。首先用的无符号整数写法是错误的,其次printf使用不当(应该用字长无关的%i保证结果正确),再次结果意义不明确。
unsigned int i= -1;
unsigned long l = -1;
printf("%i %i", i, l);
-1转换为无符号数后表示负数的符号位“1”被作为最高非符号位,输出的是无符号整数的最大值。
printf("%i %i", i >> 1, l >> 1);
输出有符号整数最大值,该值加1再乘以-1后即得有符号整数最小值。
转自[原创回答团]。


略阳县17368232483: c语言的语句问题long x= - 123456L,long和后面的L的意思是什么啊 -
柯雅还原: long 定义长整数类型 L表示该数字要解释成长整型.如果int和long字节数一样,L可以省略,如果不一样,就不能省略了.

略阳县17368232483: 在c语言中long x - square -
柯雅还原: long long是属于int型, 一般来讲, 是long int型大小的两倍, int型的4倍. 但是需要注意的是long long是一个后来加上去的数值类型, 也就是说非常老的编译器是不支持这个数据类型的(如VC++6.0).如果在此类编译器下使用长长整型, 以VC++6.0为例, 就要用它的自定义数据类型:__int64. 若要输入输出(包括C++), 则只能用printf或scanf函数. 如: __int64 i64 = 100; printf("%l64d", i64);

略阳县17368232483: C语言%lo是什么输出格式? -
柯雅还原: %lo以八进制输出long int型整数

略阳县17368232483: C语言 long x=0x12345678L; short y; y=x; printf("%x\ -
柯雅还原: 0x12345678是个十六进制数,后面的L表示这是个长整型数,输出5678.%x的格式是十六进制整型数输出,因为y是个短整型数,把x的值0x12345678L赋给y,y所分配的内在空间放不下这个数,所以只取x的低字节部分5678,因而输出结果也就是5678

略阳县17368232483: c语言longx;这里的long是什么类型啊?占用几个字节?
柯雅还原: int和long作为基本的整数类型,取值范围和位数直接相关.如果是n位整数的话,最高位表示符号位,剩下的n-1位以补码形式表示绝对值,因此范围是整数区间[-2^(n-1),2^(n-1)).int和long并没有明确位数,具体和平台相关(有一点可以确定,sizeof(int)>1,l>>1);输出有符号整数最大值,该值加1再乘以-1后即得有符号整数最小值.转自[原创回答团].

略阳县17368232483: C语言程序求解 %d %lf %2f %0f 这一类的有什么区别 ? -
柯雅还原: %后面代表的是数据类型,d表示的是数据是整型的,f表示的是实数类型,就是带小数那种.前面加l,对应的英文是long ,ld表示 的是长整型,整型占两个字节,长整型占4个字节,lf是双精度实型,占的位数也是f的二倍,是8个字节.%2f,表示...

略阳县17368232483: C语言怎么输出或输入long类型的? -
柯雅还原: 在c语言中,对于数值类型只有通过printf类函数输出这一种方式,比如printf, sprintf, fprintf等.这类函数输出时要求有格式符号,其中long double的格式符号为%llf 以下是一个简单的参考代码,输出到标准输出设备. #include int main() {long ...

略阳县17368232483: C语言中long x=12.5;合法吗?为什么? -
柯雅还原: 合法,因为int型的会自动截取整数部分,long默认为long int 也会截取整数部分,但是会有警告,提示高精度向低精度赋值可能会遗漏数据,如果要赋值,最好这样写long x = (long int )12.5;

略阳县17368232483: C语言中 长整型long 低16位 赋给整型int 语句如何写? -
柯雅还原: #include "stdio.h"void main(){long x;int i;scanf("%ld",i=(int)(xprintf("%d",i);}...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网