小欧 发表于 2013-3-30 20:27:21

在C语言中,不同数据类型的长度是由什么决定的?

565123 发表于 2013-3-30 21:47:24

这是由编译器决定的,不同的编译器会有不同的长度!
像Turbo C的int形是16位的,而VC的int是32位的

凌星 发表于 2013-3-30 22:53:17

我 到是觉得是 和编译器   还有系统 相关的    你的 代码的类型 是 和 编译器 沟通 的    编译器 还要 和系统去沟通,例如VC在不同的系统上长度貌似不同      

沉思者 发表于 2013-3-31 05:17:49

理论上我支持二楼!

shansongh 发表于 2013-3-31 09:59:45

主要是由cpu决定的多,

lzz01 发表于 2013-3-31 11:06:22

支持2楼..............

洛川子 发表于 2013-3-31 13:15:31

编译器决定的吧

小靚同学Leon 发表于 2013-3-31 16:11:57

我也想知道 啊啊啊 啊啊啊啊啊啊

故乡的风 发表于 2013-3-31 20:43:25

计算机语言一般是由一些人提出标准,然后再由某些人通过编译器或者解释器(脚本语言)实现这些标准。对于某些细节没有明确标准的,不同编译器可能会有不同处理,例如你提到的原子数据类型长度,还有经常有人问的“++”,“--”等问题。也有人遇到过其他的神奇的问题,我个人认为不排除是编译器的bug,毕竟编译器也是软件,当然,按标准来写代码一般不会发生问题的。

消失在黑暗中 发表于 2013-3-31 21:47:39

寄存器的决定的。为什么内存以8位为一单位?假如寄存器是7位的,估计是内存最小单位是7位了!64位寄存器对半为eax(32位),ax(16位),ah(8位)。计算机读取数据都是8的倍数读取,所以内存数据类型也必须以8的倍数。二进制有个特点,多一位等于乘以2倍。c语言或者其他的语言都离不开机器语言,机器语言离不开寄存器和二进制的特性。综上原因,数据类型必须是8的倍数,因为寄存器最大是64位,所以基本数据类型最大是double(64位),不过自己可以设置更大的数据类型,原理一样。。

czfengyong 发表于 2013-3-31 22:55:15

ghvn7777 发表于 2013-4-1 08:37:05

由编译器决定的吧,你定义数据类型,编译时候给你分配内存

cfklkj 发表于 2013-4-1 16:07:42

编译环境决定的(系统类型,变压器,编译语言等等)

DXT 发表于 2013-4-1 22:32:31

嗯,比较支持二楼。

伽利略幼稚 发表于 2013-4-5 17:53:08

个人觉得是编译器      

hzx13888566458 发表于 2013-4-5 20:50:30

取决于楼主所用的编译系统

374457634 发表于 2013-4-6 10:40:10

支持2楼!!!!

阔怀 发表于 2015-8-25 10:26:01

看看

GaRi 发表于 2015-8-25 11:32:03

支持10楼的答案~~

zhang99844 发表于 2015-9-8 08:19:33

我也来看看
页: [1]
查看完整版本: 在C语言中,不同数据类型的长度是由什么决定的?