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

时间:2015-06-21 00:14:02

标签: c casting unsigned signed

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

我有一组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)。

1 个答案:

答案 0 :(得分:2)

您被误导:您的代码没有任何问题,也没有任何内容支持此投射可能不起作用的声明

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