编译系统如何分配字节
A. 对于不同的系统,int,float,char等类型分配的字节是不同的,请问有谁了解,谢谢!
float大多是4个字节, char是1个字节, int在16位编译器为2字节(如Turbo C 2.0), 在32位编译器为4字节.
要了解自己的C各类型多少字节, 可以在程序中加一句看看:
printf("int(%d), float(%d), char (%d).\n", sizeof(int), sizeof(float), sizeof(char));
B. c语言结构体内存空间如何分配问题
看来你是64位的机器了,64位的机器是以8字节来排的,比如你的char name[20]要占20个字节,那么内存会分配3个内存块(暂且这么理解),是24个字节,而double 是占了8个字节,这个时候给char name[20] 分配的24个字节还剩下4个字节,已经存不下double了,所以又开辟了一个内存块来存double,一共32个字节。 你把double改为int, 你会发现是占用了24个字节空间。不知道你能不能理解
C. 若定义 int x [10];则 Turbo C编译系统为该数组分配多少个字节存储单元
在C语言里,int c[10]只有10个单元,即c[0]~c[9],这一点是与VB不一样的。
所以,是2*10=20个字节的存储单元。
D. 一个16位C编译系统中整形占几个字节,怎么算的
1 signed char 有符号的单字节整数类型 1 -128~+127
2 short int 短整型 2 -32768~+32767
3 int 整型 4 -2147438648~+2147438647
4 long int 长整型 4 -2147438648~+2147438647
5 long long int 长长整型 8 -9223372036854775808~+-9223372036854775807
E. 为什么c语言编译系统对158L分配8个字节,而对158分配4个字节
你用的编译器将 158L当做64位长整数看待了, 158作为整数处理,整数通常32位。
不同编译器处理不同。
F. 在32位编译系统里,设定义了下面的结构体类型和变量,变量x在内存中所占的字节数为_
在所有编译系统中char大小是固定的,为1字节,而在32位编译系统中float类型大小为4字节。
因此,x需要的字节数是:
9+8+4+4=25。
但在32位编译系统中,内存分配一般会对齐到双字(即4字节的整数倍)。
因此,实际为x分配的内存应该是28字节。
下面是验证:
G. C语言中系统既然不给常量分配存储空间,那么编译系统又是如何"记忆"和使用常量的呢
耐心看完,你应该能明白了:
C语言中,常量和变量是放在不同的"段"(section)里,程序一旦加载,常量/变量自然都在内存里了。
常量和全程变量,放在初始化段。
局部变量,通常在栈里。
常量在程序加载时同时加载。
H. 系统为字符串常量hello在内存中分配几个字节
咨询记录 · 回答于2021-11-06
I. 常量128 在C语言中 VS2008编译系统下 编译系统给它分配几个字节的空间来存储128这个整形常量
不知道你说的常量具体是什么意思,
1:如果指的是#define a 128这种的话,系统是不会分配内存,在编译时直接替换。当然,在C++中用const的话,当用到const变量时,会按照只读变量的方式分配内存。
2:如果指一个普通的变量赋值a=128,就是4B的大小,默认有符号数。128存放在地址为&a的内存空间中。