我看了一些博客,这些博客说c++基本类型是随着硬件而变动的,比如16位操作系统,32位等等。但是为什么我在国外的一个c++引导入门的网站看到是一个确定的呢?网址如下https://www.tutorialspoint.com/cplusplus/cpp_data_types.htm我是翻墙出去的。
想问一下真正的答案到底是什么?
和硬件无关,和编译器有关。比如说turbo c的int是16bit的,你拿到32位电脑上它也是16bit的。
注意,编译器生成什么架构的代码和它数据类型也没有必然的关系,现在主流的编译器int是32bit的,即便是那些生成64bit代码的编译器。之所以这样,是为了保持代码的兼容性。
所以大致可以这么总结,c++基本类型所占字节在现代的编译器上基本是一致的,早期编译器不是。
你看到的blog是国人编写的,国人上学的时候都是看着非常落后的谭x强的书入门的,所以他们知道这一点。但是老外未必知道这一点,毕竟turbo c之类的编译器(1987年)问世的时候,可能写文章的人还没有出生,而现在几乎没有编译器不是按照那篇文章的说法分配字节。
这就是差别。
C++只是语言载体,硬件是驱动软件运行的,它直接接触的是机器语言,基本类型存储所占字节完全与硬件无关,与编译器有关,比如常见的vc和turbo c或者其他的编译器,都可能存在同种类型,但是所占字节不同。
还有不同位数的编译器也是不一样,
16位编译器*(即指针变量):: 2个字节
32位编译器 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
64位编译器
char*(即指针变量): 8个字节
c++的 是高级语言。 跟机器的沟通中还有一层汇编。 每个编译器。 只是让Cpp的代码转化成汇编 语言 。 具体的占用几个字节 看这个编译器对类型转化到汇编所占用的字节个数
不同编译器有些差别 , 你可以自己测试一下