我有两个问题:
是否有任何方法可以指定或限制C程序中用于整数变量的位宽?
有什么方法可以监视C程序中变量的实际位使用情况?我的意思是在某些程序中,当一个寄存器分配给一个变量时,并不是该寄存器的所有位都用于计算。因此,在执行程序时,我们可以监视整个程序执行过程中实际上更改了寄存器中的多少位吗?
最佳答案
从1999年的标准开始,您可以在C中使用固定宽度(或至少保证很多位)类型,请参见例如Wikipedia或在inttypes.h
C标头中定义的任何体面的C描述(在C ++中称为cinttypes
),也在stdint.h
(C)或cstdint
(C ++)中定义。
您当然可以为每个计算检查值的取值,并相应地限制变量。但是除非您被严重束缚住空间,否则我只会忘记这一点。在许多情况下,使用“足够大”的数据类型会不得不将较小的值强制转换为自然宽度以进行计算,然后进行回退,从而浪费了空间(和计算时间)。提防premature optimization,甚至还要注意优化错误的代码(在深入研究以使代码“更好”之前,请测量性能是否足够,是否值得修改)。