我正在研究Fortran 2008中引入的storage_size内部函数,以获取用户定义类型man storage size的大小。它以位为单位返回大小,而不是字节。我想知道以比特而不是字节返回大小的原因是什么。 因为我需要以字节为单位的大小,所以我只想将结果除以8.是否可以安全地假设返回的大小总是可被8整除?
答案 0 :(得分:3)
期望字节始终为8位甚至是不安全的(参见模块CHARACTER_STORAGE_SIZE
中的iso_fortran_env
)!对于来自SC22 / WG5或X3J3的storage_size()
联系人的理由,但是前成员之一总是说(在comp.lang.fortran上)这些问题没有多少意义和一个明确的答案。通常只有人推动这种变体而不是另一种。
我的猜测是前一个函数bit_size()
的对称性是其中一个原因。为什么有bit_size()
而不是byte_size()
?我猜你不必将它与字节大小相乘(并检查一个字节有多大),你可以立即应用位操作程序。
到你的上一个问题。是的,在具有8位字节的机器上(其他机器没有Fortran 2008编译器AFAIK),位大小始终可以被8整除,因为一个字节是最小的可寻址存储器,并且结构不能仅使用一个字节的一部分。