C/C++基本数据类型长度

1. CPU位数

CPU位数=CPU中寄存器的位数=CPU能够一次并行处理的数据宽度(位数)=数据总线宽度;现在的计算机处理器一般都是64位,这是硬件的事。
查看CPU位数:右键点击桌面上的“此电脑”图标,然后在弹出的菜单中点击“属性”菜单项。

2. 操作系统位数

指令集:
CPU为了实现其功能设计了指令集,即是CPU的全部指令,这是机器语言。计算机的所有功能都是基于CPU的指令集。指令集和CPU的位数是有联系的。如Intel 8086 CPU 是16位,其指令集也是16位。如Intel 80386DX CPU 是32位,其指令集也是32位,但它也保持原16位指令集,这是为了向上兼容。有64位CPU上运行32位操作系统、32位CPU上运行16位操作系统的情况,也是为了向上兼容。
操作系统位数 = 其所依赖的指令集位数 <= CPU位数

3. 机器字长

电脑技术中对CPU在单位时间内(同一时间)能一次处理的二进制数的位数叫字长。

4. 编译器位数

编译器位数对数据类型长度的影响:
1、有影响,但是很小。这个影响在不同的编译器是不同的。
微软的CL只有32位,对,只有32位,但是它能编译x64,所以对于CL来说,编译器的位数没有意义。编译的目标代码指针位宽取决于参数是指定x86还是x64.gcc和clang,编译器本身的位宽决定不加特别参数指定,默认编译的目标代码的指针位宽跟编译器本身位宽相同。但是,如果你编译编译器的时候允许了multilib,那么你还可以通过m32或者m64之类的参数来决定输出的目标代码的位宽是32还是64。总结一下就是,只影响不指定处理器参数的默认生成的目标代码的位数。
2、数据类型取决于编译器。
有人觉得,类似于wchar_t这种基本也算是标准类型了,在Linux上是32位在windows上是16位,这不是操作系统相关吗?但是你要想啊,决定这个到头来还是编译器啊。你看我在windows上能编译Linux运行的程序,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值