1

我得到了一个短值(只能限制为 a UINT8)并想将其分配给UINT8(/ unsigned char)。
但我没有想到更好的选择,而是这样做:

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

但这能在我使用时实现我想要的unlatch.FaultBits.Value[0]吗?(Vaule[] 是结构体中的一个数组UINT8 Value[64];:)

4

1 回答 1

1

这能达到你想要的吗?好吧,我可以假设四种途径之一,因为您还没有确切地告诉我们您想要什么(抱怨)。

  1. 您想将short值分配给 a uint8_t,而不进行有符号到无符号的转换。在这种情况下,您必须确保旧值在 a uint8_t:的范围内assert(old_value >= 0 && old_value <= 255);。如果这一点描述了您想要的行为并且断言失败,那么不,您的代码没有做您想要的。
  2. 您想为 a 分配一个可能为负数或超出范围的short值,uint8_t并且您看不到他的评论中描述的缩减过程 R 存在问题。如果这一点描述了你想要的行为,那么是的,你的代码做你想要的。
  3. 您想为 a 分配一个可能为负数或超出范围的short值,uint8_t而他的评论中描述的归约过程 R 对您不起作用,但您准备在代码中表达自己的归约算法。如果这一点描述了您想要的行为,那么不,您还没有表达您的自定义缩减算法。
  4. 您想为 a 分配一个可能为负数或超出范围的short值,uint8_t并且您不希望减小该值。在这种情况下,uint8_t是不合适的。选择不同的类型。
于 2013-03-23T03:15:12.853 回答