为数组中的unsigned char分配short是什么结果?

时间:2013-03-23 02:02:46

标签: c++ c arrays char short

我得到一个简短的值(可以仅限于UINT8),并希望将其分配给UINT8(/ unsigned char)。
但我认为没有更好的选择,但要做到这一点:

unlatch.FaultBits.Value[0] = ui->lineEditFaultBits->text().toShort();

但是当我使用unlatch.FaultBits.Value[0]时,这可以实现我想要的吗? (Vaule []是结构中的数组:UINT8 Value[64];

1 个答案:

答案 0 :(得分:1)

这可以达到你想要的吗?好吧,我可以假设四种途径中的一种,因为你没有告诉我们你想要什么(发牢骚)。

  1. 您希望将short值分配给uint8_t,而无需签名到无符号转换。在这种情况下,您必须确保旧值在uint8_tassert(old_value >= 0 && old_value <= 255);的范围内。如果这一点描述了你想要的行为并且断言失败了,那么不,你的代码没有做你想要的。
  2. 您希望为short分配可能为负值或超出范围的uint8_t值,并且您没有看到评论中描述的缩减过程R存在问题。如果这一点描述了您想要的行为,那么是的,您的代码可以满足您的需求。
  3. 您希望为short分配可能为负值或超出范围的uint8_t值,并且评论中描述的缩减过程R对您不起作用,但您已准备好在代码中表达自己的缩减算法。如果这一点描述了您想要的行为,那么不,您还没有表达自定义缩减算法。
  4. 您希望为short分配可能为负值或超出范围的uint8_t值,并且您不希望希望减少该值。在这种情况下,uint8_t不合适。选择其他类型。