int 类型 占多少字节是由什么决定的

int 类型占据多少字节?到底是跟编译器有关?还是系统来决定的?

1. CPU的设计者才不管你在上面跑什么程序.他们只是按着他们的想法来设计.
而int的大小,至少在C/C++中,标准只说可以由实现者自己定义.至于要不要按机器的字长来设计那就是编译器设计者的喜好了.除非哪天标准改成int必须是机器的字长....不过C/C++标准中抽象出来的"机器",恐怕没有字长这个概念吧.

2. 编译器,简单的说目前流行的的是32位机,但TC里的int就是16位的,流行的编译器(gcc,VC)都是32位。
另外64位机也有了,但上面的int还是可以是32位的。
与此同时,就算在32位机上,也可以做出64位的int来。
所以只要愿意,编译器能决定出int的大小,就算是8位的机器也能搞出64位的来。

3. 一个简单大家都知道的事实!
trubo C的int是2字节
vc的int是4字节

再看java编译器,无论在什么机器上,int都是那么大
所谓跟平台无关,就是跟机器和操作系统没有关系!

=====================================

且看下面: likefermat 大神的 总结:

4. 机器第一作用,编译器第二作用.
现在新出的机器开始有64位的,编译器也逐渐的要适应这个改变,由32位向64位过渡.
如果机器是16位的,编译器强制为32位的话,效率及其低下,没那家厂商会做如此SB的事情,
我们现在的机器一般都是32位的,编译器所以一般也是32位,但也支持64位的,
__int64  就是64字节的,
总之int 只是一个类型,没有太大的意义,机器的位数才是关键所在!
离开机器,说有编译器决定的人,实在不敢恭维.
难道要在8位机上实现64bit的编译器?
机器进步了,编译器跟不上,就要被淘汰,
编译器超前了,效率低下,也不会有市场,
所以不要单纯的讨论编译器或者机器了。
OVER!

int 类型 占多少字节是由什么决定的

时间: 2024-11-08 12:01:00

int 类型 占多少字节是由什么决定的的相关文章

C语言实现一个int类型数组里除了两个数字之外,其他的数字都出现了两次,找出这两个数字

题目是这样叙述的:在一个数组中除两个数字只出现1次外,其它数字都出现了2次, 要求尽快找出这两个数字. 要求:时间复杂度为O(N),空间复杂度为O(1). 请看我的分析:将这道题简单化:一个数组中只有一个数字出现一次,其他数字都是成对出现的,这时我们可以根据异或运算符的特性:A^B^A = B; 0 ^ A = A:我们可以将这个数组的全部元素依次做异或运算,最终结果就是那个只出现一次的数字.不会的可看本人(2019-04-04)那天的博客 如果这个数组中出现两个不同的数字,而其他数字均出现两次

一个int类型究竟占多少个字节

一个int占多少个字节? 这个问题我们往往得到的答案是4. 可是int究竟占多少个字节,却跟你的机器环境有关. As you can see, the typical data type sizes match the ILP32LL model, which is what most compilers adhere to on 32-bit platforms. The LP64 model is the de facto standard for compilers that genera

int类型究竟占几个字节

我最近也在看深入理解计算机系统这本书,上面提到了在32位机器和64机器中int类型都占用4个字节.后来,别人查了The C Programming language这本书,里面有一句话是这样的: Each compiler is free to choose appropriate sizes for its own hardware, subject only to the restriction that shorts and ints are at least 16bits, longs

一int考虑什么类型的多少字节

一int表示的字节数? 问题是,我们经常得到的答案4. 但int究竟占多少个字节,却跟你的机器环境有关. As you can see, the typical data type sizes match the ILP32LL model, which is what most compilers adhere to on 32-bit platforms. The LP64 model is the de facto standard for compilers that generate

c++类型所占的字节和表示范围

一:数值类型的大杂烩 (1)short.int 和 long 类型都表示整型值.存储空间的大小不同 一般, short 类型为半个机器字长,int 类型为一个机器字长,而 long 类型为一个或两个机 器字长(在 32 位机器中 int 类型和 long 类型通常字长是同样的). (2)常量的定义以及表示范围: unsigned   int   0-4294967295                                                  就是2^32-1 int  

java中boolean类型占几个字节

java的基本数据类型中,boolean只有两种状态,默认值为false.取值范围是{true,false},理论上占1bit,实际上: 1.单个的boolean 类型变量在编译的时候是使用的int 类型. boolean a=true;//这个a在JVM中占4个字节即:32位. 2.boolean 类型的数组时,在编译的时候是作为byte array来编译的所以boolean 数组里面的每一个元件占一个字节, boolean[] b = new boolean[10];//数组时,每一个boo

C++学习笔记:不用sizeof判断int类型占用几个字节

#include <stdio.h> #include <string.h> char *change(int val, int base, char *retbuf) { static const char *str = "0123456789ABCDEF"; char *p; char buf[15]; p = buf+14; *p = 0; do { *--p = str[val % base]; } while( val /= base ); strcp

int **a[3][4]占多少字节?

首先要说明的int **a[3][4]的意思是定义一组指向指针变量的二维指针数组,也就是说,定义了一个3行4列的指针数组,每个指针都指向一个指针,从存储结构上来说,就是一个存储了12个指针变量的数组,问题就在于搂主所说的“a占多少字节数?”这里的a指的到底是什么,a本身实际含义是一个地址,表示a[3][4]这个数组的首地址,就a作为一个个地址来说,它占用4个字节:同时a也是a[3][4]这个数组一种表示,如果用sizeof(a)去求解的话,它代表的是a[3][4]这个数组所占用的空间,而不是a这

int、char、long各占多少字节数

Java基本类型占用的字节数:1字节: byte , boolean2字节: short , char4字节: int , float8字节: long , double 编码与中文:Unicode/GBK: 中文2字节UTF-8: 中文通常3字节,在拓展B区之后的是4字节综上,中文字符在编码中占用的字节数一般是2-4个字节. C语言中short通常是2字节,具体可能和平台编译器相关. 原文地址:https://www.cnblogs.com/muhe221/p/8856627.html