c语言 long x; 这里的long是什么类型啊?占用几个字节?
答案:4 悬赏:0 手机版
解决时间 2021-03-20 20:12
- 提问者网友:我的未来我做主
- 2021-03-19 19:13
c语言 long x; 这里的long是什么类型啊?占用几个字节?
最佳答案
- 五星知识达人网友:一把行者刀
- 2021-03-19 20:45
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后即得有符号整数最小值。
转自[原创回答团]。来自:求助得到的回答
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后即得有符号整数最小值。
转自[原创回答团]。来自:求助得到的回答
全部回答
- 1楼网友:廢物販賣機
- 2021-03-19 23:42
long指长整型,32位的吧,4字节
- 2楼网友:第幾種人
- 2021-03-19 22:17
long是长整型数据
int是整型数据
在16位机上,int 2byte, long 4byte
32机, int 4,long 4
64 int 4 ,long 8
int是整型数据
在16位机上,int 2byte, long 4byte
32机, int 4,long 4
64 int 4 ,long 8
- 3楼网友:从此江山别
- 2021-03-19 21:25
长整形咯
占几个字节么,试:
printf("%d",sizeof(long));
占几个字节么,试:
printf("%d",sizeof(long));
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯