64位系统下C语言中int值的取值范围
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了64位系统下C语言中int值的取值范围相关的知识,希望对你有一定的参考价值。
RT,请问我用的是64位的操作系统,按理说int值的取值范围应为-9223372036854775808到9223372036854775807啊。但是为什么我的测试结果却是32位系统的长度?
64位机器中,int占32位,取值范围为-2147483648~2147483647(-2^32~2^32-1)。
int类型的情况:
shortint类型可能占用比int类型更少的存储空间,C保证short类型至少16位长,用于只需小数值的场合以节省空间。
longint类型(或简写为long类型)可能占用比int类型更多的存储空间,C保证short类型至少32位长,用于使用大树枝的场合。
longlongint类型(或简写为longlong类型)可能占用比long类型更多的存储空间,C保证short类型至少64位长,用于使用更大数值的场合。
扩展资料
C语言的整型溢出问题int
int为4字节32位,其中首位用0表示正数,用1表示为负数。因此对于
最大正数可以表示为:0x7fffffff(7的二进制为0111,f二进制为1111)
最大负数(-1)可以表示为:0xffffffff
最小负数可以表示为:0x80000000(8的二进制为1000)
负数为正数的源码取反码再取补码,过程如下:
1、-1的原码:10000000000000000000000000000001
2、得反码:11111111111111111111111111111110
3、得补码:11111111111111111111111111111111
参考技术A 64位系统下C语言中int还是占4字节,32位,与32位系统中没有区别!64位系统下,采用64位编译器进行编译处理时,发生变化的变量类型是:long。
32位系统下,long占4字节,32位,与int相同。
64位系统下,long占8字节,64位,有符号数取值范围:-9223372036854775808至9223372036854775807 参考技术B 其实这个int的字长和数据总线的宽度是没有必然关系的
在你的编译环境下#include <limits.h>
然后打开limits.h 你就能看到各个数据类型的范围了
我用的TI 28035DSP编译器中char还是16位的呢追问
嗯,我明白了,不过貌似修改limits.h中的取值范围并不会影响到程序的执行结果
追答额,改那个没用的,就像电器上贴的铭牌,你把1kw涂改成2kw,电器还是1kw
追问好吧 原来那个文件只是用来注释说明不同数据类型的取值范围的
谢谢了
可能你的VS还是32位的?
使用long 或者long long试试?
int 取值范围
16位系统下:int的取值范围时-32768--32767,也就是
-2^15—2^15-1.
32位系统下:-2147483648—2147483647,
即 -2^31—2^31-1.
默认int=signed int.
规定 short int 取值范围不能大于int。
long int 取值范围不能小于int。
short 占2个字节,16个比特位 所以取值-2^15—2^15-1
int 4个字节
long 4个字节 32个比特位 所以取值 -2^31—2^31-1.
float 4个字节
double 8个字节
char 1个字节
本文出自 “11132019” 博客,请务必保留此出处http://11142019.blog.51cto.com/11132019/1760082
以上是关于64位系统下C语言中int值的取值范围的主要内容,如果未能解决你的问题,请参考以下文章