1

ユーザーが整数ストレージのビットサイズを選択してそれを使って計算できるようにするアプリをプログラミングしています。8、16、32、または 64 ビットのストレージを符号付きまたは符号なしとして選択できます。これは実行時に設定および変更され、アプリは指定された型で計算を行います。

ユーザー インタラクションの例:

  • 16ビットモードに入る
  • タイプ 5C
  • プレスプラス
  • タイプ2A
  • 評価を押します
    • return { value1.getSigned16() + value2.getSigned16(); }

オペレーターごとに 8 つのケースをプログラミングすることは避けたいと思います。これには、ポインターまたは関数ポインターがうまく機能する可能性があると思います。評価メソッドは、両方が同じである限り、使用している整数のサイズを気にしません。問題は、ポインターが返される変数の種類を気にするため、これを実装する方法がわからないことです。ジェネリック ポインターの使用を検討しましたが、逆参照が必要な場合には役に立ちません。それでも 8 つのケースが必要です。

value1.getProperSize() + value2.getProperSize();

// * This obviously won't work
int* getProperSize() {
    if (size == 16) return (int16_t)storageValue;
    if (size == 32) return (int32_t)storageValue;
    // Etc...
}

この問題に対処するための考えや提案は大歓迎です。

4

3 に答える 3

1

実際には、異なる型で算術を行う必要はありません。64ビットで計算を行い、結果をビットサイズにキャストするだけです。

于 2014-01-31T21:13:22.487 に答える