读书人

关于字跟机器字

发布时间: 2012-08-11 20:50:31 作者: rapoo

关于'字'和'机器字'
在一个翻译中文的书中写到:
short 以半个字表示,int以一个机器字表示,long以一个或两个机器字表示(在32位机器中,int和long 通常长度相同)
这里有两个问题:
1、short以半个字中的‘字’和int以一个机器字中的‘机器字’,这两个‘字’所指的是同一个概念吗?都是以‘机器字’衡量的吗?
2、在32位机器中,int和long 通常长度相同:隐含说是不是,两个都是一个机器字?

[解决办法]
机器字是按位数算的,32位就是4字节
1。是的,不过一般来说short似乎不会因为机器字变长而改变,基本是固定2字节
2。在32位系统中,目前主流编译器long,int都是4字节,也就是1个机器字

[解决办法]
是C++ Primer吧。

我也问过

http://topic.csdn.net/u/20120127/22/2b5165a4-27a3-46c6-8a01-74e1fa616b70.html
[解决办法]
其实int long之类的长度和机器位数没有关系。主要是和编译器有关。如果你64位机用32位编译器。出来的int和long还是32位的。

所以在实际使用的时候最好用sizeof测一下。linux的很多configure脚本就有这样的功能。
另外inttypes.h里面有一些类似uint8_t,uint32_t 的类型名。如果对字长度很敏感的话,建议用这些类型名。

在64位系统里面建议都用long做默认整形。因为
数字大不容易溢出
可以和64位指针转换
程序转到32位机器可以通用。

而(Intel 汇编)里面的助记码,在32位机下word是16bit,dword是32bit

读书人网 >C++

热点推荐