对.
类型名 变量字节 取值范围
[singned]char 1 -128~127
ungsigned char 1 0~255
[singned] long int 4 -2147483648~2147483647
unsiged long [int] 4 0~4294967295
float 4 -3.4E38~3.4E38 7个有效位
double 8 -1.7E308~1.7E308 15个有效位
㈡ C语言数据类型的存储空间长度排序
这道题本身就是没有意义的
而且稍微误人
不信,你自己用sizeof输出试试
换个机器
或者操作系统
或者编译器
他就有可能不同
你看看我跑的结果
你说你这题有意义吗
计算机是个技术行业,
不是理论学
死拜理论,学傻了
㈢ C语言的内存地址是按什么顺序排列的:比如是按从大到小还是内存自动分配的,请举例
您问的具体是什么?
(1)是地址编号和集成电路里面(用显微镜看)各个单元的位置次序之间的关系?
(2)还是问程序中各个指令代码执行的次序和地址编号之间的关系?
(3)还是问程序中各个变量的次序和地址编号之间的关系?
如果是(1),那么
集成电路里面各个单元的位置次序,一般是不公开的。所以人们不知道它的次序是从左到右还是从右到左还是别的方式。据说,现在的布局大多是交叉分散排列的,因为程序中经常出现连续访问连续地址的操作,如此分散排列,可以使功耗分散,减小局部温升,延长器件寿命。
如果是(2),那么
一般的指令,除了跳转指令和调用、返回指令以外,普通指令都是按照地址连续增加的次序,连续排列的。而且,汇编语言中书写程序清单的次序,除了使用特殊伪指令规定地址(如ORG指令)处以外,都是按照地址编号连续增加的次序书写的。如此,除跳转、调用、返回指令外,书写的次序就是执行的次序。
如果是(3),那么
用汇编语言设计程序时,你可以随自己习惯,觉得怎么安排方便,就怎么安排。
如果是高级语言,那么,不同的编译程序,可以有所不同。
不过,如果是C语言,那么数组内部各个下标变量的地址,必须是按照下标由小到大地址也由小到大的次序连续安排。这是因为,C语言中,对指针的运算有严格规定。
例如p是指向整数的指针,则p+2就应该等于指向p所指的整数变量后面第二个整数变量的指针。于是(p+2)相应的物理地址,就应该等于p相应的物理地址加上2倍int变量的长度。 而对于数组,又是按照指针的概念来规定的。例如:a[2]就和*(a+2)完全等效。
㈣ c语言中数据占用存储空间从小到大
数据类型对应的字节数:
32位编译器:-----------------------------------------
char 1 字节
short int 2 字节
int 4 字节
unsigned int 4 字节
float 4 字节
double 8 字节
long 4 字节
long long 8 字节
char* 4 字节
64位编译器:----------------------------------------
char 1 字节
short int 2字节
int 4 字节
unsigned int 4 字节
float 4字节
double 8 字节
long 8 字节
long long 8 字节
unsigned long 8 字节
char* 8 字节
㈤ C语言中(以16位PC机为例),各数据类型的存储空间长度的排列顺序为( )
A
在16位系统下:
char 1字节
int 2字节
long 4字节
float 4字节
double 8字节
㈥ c语言中的五种基本数据类型char,int,long int,float,double的储存空间长度排序是怎么样的
char
1字节
float
4字节
double
8字节
至于int
看编译器,16位的2字节,
32位和64位的
占4字节
long
16位和32位
4字节,
64位的
有的4字节有的8字节。
㈦ 在C语言中,二维数组元素在内存中的存放顺序是 A按行存放 B按列存放 C由用户自己定义 D由编译器决定
c语言中,二维数组元素在内存中是按行存放的。
二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式]。二维数组在概念上是二维的,即是说其下标在两个方向上变化, 下标变量在数组中的位置也处于一个平面之中, 而不是象一维数组只是一个向量。
但是,实际的硬件存储器却是连续编址的, 也就是说存储器单元是按一维线性排列的。如何在一维存储器中存放二维数组,可有两种方式:一种是按行排列, 即放完一行之后顺次放入第二行。另一种是按列排列, 即放完一列之后再顺次放入第二列。在C语言中,二维数组是按行排列的。
例如:float a[3][4],b[5][10]; 定义a为3*4(3行4列)的数组,b为5*10(5行10列)的数组。注意,不能写成 float a[3,4],b[5,10]; 具体可以表示:a[3][4]={ {1,2,3,4},{5,6,7,8},{9,10,11,12} }
(7)c语言存储空间排列扩展阅读:
1、表示方法:
数组元素也是一种变量, 其标识方法为数组名后跟一个下标。下标表示了元素在数组中的顺序号。数组元素的一般形式为:数组名[下标] 其中的下标只能为整型常量或整型表达式。如为小数时,C编译将自动取整。例如,a[5],a[i+j],a[i++]都是合法的数组元素。数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。
2、赋值方法:
初始化赋值的一般形式为:static类型说明符数组名[常量表达式]={值,值……值}; 其中static表示是静态存储类型, C语言规定只有静态存储数组和外部存储数组才可作初始化赋值。在{ }中的各数据值即为各元素的初值, 各值之间用逗号间隔。例如:static int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相当于a[0]=0;a[1]=1...a[9]=9;
3、使用规则:
一、数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。
二、数组名的书写规则应符合标识符的书写规定。
三、数组名不能与其它变量名相同。
四、可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。
五、只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:static int a[10]=1;(请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。)
六、若不给可初始化的数组赋初值,则全部元素均为0值。
七、假如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。例如:static int a[5]={1,2,3,4,5}; 可写为:static int a[]={1,2,3,4,5};动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。
参考资料来源:网络-二维数组
网络-数组
㈧ C语言中结构体成员地址在内存中是如何排列的
一般都是按照变量定义的顺序,然后考虑4字节对齐在不同变量间留空排列的
㈨ 在C语言中5种基本数据类型的存储空间长度的排列顺序
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:
在C语言中,5种基本数据类型的存储空间长度的排列顺序为:____A_
A、char<int<long int <=float<double
B、char=int<long int <=float<double
C、char<int<long int=float=double
D、char=int=<long int <=float<double
我选则A对么?
为什么?
解析:
对.
类型名 变量字节 取值范围
[singned]char 1 -128~127
ungsigned char 1 0~255
[singned] long int 4 -***********~***********
unsiged long [int] 4 0~***********
float 4 -3.4E38~3.4E38 7个有效位
double 8 -1.7E308~1.7E308 15个有效位