如何从无符号 16 位添加有符号 8 位?

How to Add signed 8-bit from unsigned 16-bit?

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

我有一个 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 和一些过时的大型机。如果你是针对更主流的系统编程,不用担心。