1

私は短い値(これはに限定することができます)を取得し、それを(/ )UINT8に割り当てたいと考えています。 しかし、これ以上の選択肢は考えられませんでしたが、これを行うには: UINT8unsigned char

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

しかし、これは私が使用するときに私が望むものを達成できますunlatch.FaultBits.Value[0]か? (Vaule[] は struct: 内の配列ですUINT8 Value[64];)

4

1 に答える 1

1

これはあなたが望むものを達成できますか?4 つの道のうちの 1 つを推測できます。

  1. 符号付きから符号なしへの変換を行わずに、short値をに代入したい。uint8_tこの場合、古い値が : の範囲内にあることを確認する必要がありuint8_tますassert(old_value >= 0 && old_value <= 255);。この点があなたが望む動作を説明していて、そのアサーションが失敗する場合、いいえ、あなたのコードはあなたが望むことをしません。
  2. shortおそらく負の値または範囲外の値を aに割り当てたいのですがuint8_t、彼のコメントで説明されている削減プロセス R に問題はありません。この点があなたが望む動作を説明している場合、はい、あなたのコードはあなたが望むことをします。
  3. short負の値または範囲外の可能性のある値を aに割り当てたいのですがuint8_t、彼のコメントで説明されているリダクション プロセス R は機能しませんが、コードで独自のリダクション アルゴリズムを表現する準備ができています。この点が希望する動作を説明している場合、いいえ、カスタム削減アルゴリズムを表現していません。
  4. short負または範囲外の可能性のある値を aに割り当てuint8_tたいが、値を減らしたくない場合。この場合、uint8_tは不適切です。別のタイプを選択してください。
于 2013-03-23T03:15:12.853 に答える