Каков результат назначения короткого замыкания на неподписанный символ в массиве?

Я получил короткое значение (которое может быть ограничено UINT8) и хотите назначить его UINT8(/unsigned char).
Но я думал, что нет лучшего выбора, кроме как сделать это:

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

Но может ли это добиться того, чего я хочу, когда я использую unlatch.FaultBits.Value[0]?
(Vaule [] — это массив в структуре: UINT8 Value[64];)

1

Решение

Может ли это достичь того, что вы хотите? Ну, я могу предположить один из четырех путей, потому что вы не сказали нам точно, что вы хотите (ворчание).

  1. Вы хотите назначить short значение для uint8_tбез преобразования в подпись в без знака. В этом случае вы должны быть уверены, что старое значение находится в диапазоне uint8_t: assert(old_value >= 0 && old_value <= 255);, Если этот пункт описывает поведение, которое вы хотите, и это утверждение не выполняется, то нет, ваш код не делает то, что вы хотите.
  2. Вы хотите назначить возможно отрицательный или вне допустимого диапазона short значение для uint8_t и вы не видите проблемы с процессом сокращения R, описанным в его комментарии. Если этот пункт описывает поведение, которое вы хотите, то да, ваш код делает то, что вы хотите.
  3. Вы хотите назначить возможно отрицательный или вне допустимого диапазона short значение для uint8_t и процесс сокращения R, описанный в его комментарии, не работает для вас, но вы готовы выразить свой собственный алгоритм сокращения в своем коде. Если этот пункт описывает желаемое вами поведение, то нет, вы не указали свой собственный алгоритм сокращения.
  4. Вы хотите назначить возможно отрицательный или вне допустимого диапазона short значение для uint8_t и вы не хотите, чтобы значение было уменьшено. В этом случае, uint8_t не подходит Выберите другой тип.
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]