最近在看深入理解计算机系统这本书,上面提到了在32位机器和64机器中int类型都占用4个字节。后来,查了The C PrograWhatsApp无法扫码登录mming language这本书,里whatsapp为什么无法登陆面有一句话是这样的:Each compiler is free to choose appropriate sizes for its own hardware, subject only to the restriction that shorts and ints are whatsapp无法输入手机号at least 16bits, longs are at least 32bits, and short is no longer than whatsapp官方中文版int, which is no longer than long.意思大致是编译器可以根据自身硬件来选择合适的大小,但是需要满足约束:short和int型至少为16位,long型至少为32位,并且short型长度不能超过int型,而int型不能超过long型。这即是说各个类型的变量长度是由编译器来决定的,而当前主流的编译器中一般是32位机器和64位机器中int型都是4个字节(例如,GCC)。
这个int类型的大小到底是跟编译器有关,还是跟CPU有关,还是跟操作系统有关?
所谓的16位32位64位系统是由cpu决定的,由机器指令的寻址、寄存器位数决定的
os受cpu的限制,但在32位的cpu下16位的os也可以跑(就向上面提到的所谓纯dos)
很多os是向前兼容的,就是使以前的程序也能运行,如果编译器本身是16位时代做的,那么os会提供一个模拟16位的子环境供这个编译器使用
int和void*长度应该是一样的(16位的时候的20位的指针是两个16位错位加起来的)
非要转牛角尖的话,int只是语言定义里面的一个关键字,只对compiler可见,complier说它是几位就是几位,和os/cpu都没关系
永远都用sizeof是最安全的办法,但sizeof只是编译时常量,不能做到二进制兼容(移植)
说 int和void*一样长只是因为在一般情whatsapp为什么注册不了况下它们都应该可以放到单个寄存器里,其实这whatsapp聊天记录转移到苹果样说很不确切,还是不要这样理解的好,说在xx位的cpu上int whatsapp详细介绍是多少位只是因为这级别的cpu有对xx位数据进行操作的单条指令(因为寄存器是xx位)(可能会有扩展指令,我不清楚,但关键看寄存器的位数),从而编 译器就图个方便把int做为xx位,这也不一定的,譬如以后64位机器出来了,可能编译器只是把long扩到64位,而int还是当作32,也挺合适的。
网上很多博客对这个有很多的解释whatsapp中文版最新下载,感兴趣可以去看看!
16whatsapp删除好友账号位编译器的话是2字节
32位编译器是4字节。whatsapp如何看好友动态
全角和半角
WhatsApp中文网页版 - WhatsApp官网请注明:WhatsApp中文网页版 - WhatsApp官网 » whatsapp登录不上电脑 在不同电脑的不同软件上,有的int型变量占用2个字节,有的占