C/C++中能不能为int、long、long long等类型分配存储空间?

来源:百度知道 编辑:UC知道 时间:2024/05/31 08:04:02
在32位系统中int一般是32bit(4Byte),内存比如1000-1003,这是在32位系统中,那么long long之类的又是怎么分配的?还是这样比如1000-1007连续吗?
要是的话那可不可以让编译器为这些类型分配更多的空间以表示更大的值?比如让long long为128bit?
那么以前适用到其上的+-×/等的运算还有效吗?

我问的是这些,不是用数组之类的存储长数字!
1000-1003我是看的别的,指的可能是地址,每个8bit,一共4Byte!
long long确实是c99增的,我用的MinGW支持,是64位的!
long double是96bit或128bit的,已经大于64bit,它是怎么扩展的?它的存储是不是连续的?
要是想对2的512次方进行移位操作那怎么办?

内存比如1000-1003:是32位的话是1000-1031,内存是按位来存储的.
long long:没有这个吧?有的是long int .也是连续分配内存空间的.这样才能保证它的数值是确定的,因为每个内存数要给一个固定的地址.如果你有一些汇编基础的话对存储就比较了解了.
要是的话那可不可以让编译器为这些类型分配更多的空间以表示更大的值?比如让long long为128bit:不可以.因为对于一个操作系统来说,读取的位长是有限制的.不能说我一次读几十位然后当成一个大数.在汇编里,这就像寄存器有八位如AH的,十六位的如AX=AH:AL,三十二位的EAX=DX:AX,而六十四位的就要两个三十二的合在一起如:EDX:EAX.不能再大了.
那么以前适用到其上的+-×/等的运算还有效吗:运算都是人定义的,只要能读取,就能操作!
不知道还能不能解答你的疑问!

直接用的话应该是固定了的,不过可以想办法扩展吧,比如说汇编。。。。

没有LONG LONG 吧,直接用dubble类型不就得了