【发布时间】:2013-03-23 02:02:46
【问题描述】:
我有一个短值(只能限制为 UINT8)并想将其分配给 UINT8(/unsigned char)。
但是我没有想到更好的选择,而是这样做:
unlatch.FaultBits.Value[0] = ui->lineEditFaultBits->text().toShort();
但是当我使用unlatch.FaultBits.Value[0] 时,这能达到我想要的吗?
(Vaule[] 是结构体中的数组:UINT8 Value[64];)
【问题讨论】:
-
结果是把整数的低8位赋给字符。
-
不确定你在担心什么,但我可以确认这不会破坏内存(不会改变 Value[1])。它会在分配之前简单地缩短值(取最低位字节)。
-
它不“取最低位字节”。它将模 256 的值减小到 [0,255] 范围内。仅当原始(有符号)值以二进制补码表示时,这两个操作才相同。