c - 如何从未有符号的 16 位添加有符号的 8 位



我无法理解如何执行以下操作:

我有一系列uint8_t元素。从这个数组中,我想获取一个元素并将其添加到uint16_t项中。但是,出于此操作的目的,我想将此uint8_t值解释为有符号值。

uint16_t A;
uint8_t  B;
uint16_t result;
result = A + (int8_t)B;

但是,我了解到这种铸造可能不起作用。我想不出任何其他方法可以让它工作。否则,我的数组的元素保持uint8_t很重要。仅对于此操作,我才希望将uint8_t元素解释为有符号值(int8_t)。

你被误导了:你的代码没有任何问题,也没有任何东西支持这种强制转换可能不起作用的说法。

从技术上讲,int8_t类型在您的系统上不可用的可能性很小,但在这种极不可能的情况下,也不会定义uint8_t。此类系统包括一些DSP和一些过时的大型机。 如果您正在为更主流的系统编程,请不要担心。

相关内容

  • 没有找到相关文章

最新更新