【发布时间】:2015-06-12 18:03:51
【问题描述】:
假设有
function f(int8_t a, int8_t b) // a b only need 8 bits
另一种选择是:
function f(int32_t a, int32_t b) // a b only need 8 bits
它运行在 32 位 MCU 中,例如 ARM Cortex_M。就所需的代码大小、数据大小和执行效率而言,哪一个是更好的选择?
如果在8位MCU如8051,int8_t应该更好吧?
【问题讨论】:
-
试试看你会得到什么。
-
在 32 位 MCU 上,前面的代码可能会将 8 位转换的 32 位数字存储在堆栈中,因此不会有太大区别。
-
如果您选择 8 位,请确保您正确使用有符号或无符号。
-
function f(int32_t a, int32_t b)可能只需要 8 位,但是通过了 32 位,如何确保f()仅使用 8 位?f(int8_t a, int8_t b)肯定会确保只使用 8 位。考虑到 2 个函数签名,嫌疑人f()将以您意想不到的方式发生微妙的变化。 IOWs,如果现在功能错误,效率提高有什么用?发布您的样本f()。
标签: c arm microcontroller 8051