1

2つの定数を使用するコードがあり、それぞれが配列のサイズをさまざまな方法で記述しています。

const  ArraySize = 1024;
       ArrayBits = 10;    //2^10 = 1024 bits

これらの一方を他方の観点から表現するにはどうすればよいですか?コンパイラは、定数でLog2またはLdExpを使用することを許可しません。

Delphiのどのバージョンでも答えはOKです。

4

2 に答える 2

9

さて、あなたはこれを行うことができます:

const  
  ArrayBits = 10;
  ArraySize = 1 shl ArrayBits;

しかし、私はおそらくそれを敬遠するでしょう。それは私には少し曖昧すぎると感じます。私の意見では、算術演算を実行するときは算術演算子を使用する必要があります。

私はおそらくあなたのコードをそのままにして、2つの定数が適切に関連しているというアサーションをランタイムコードに追加します。コメント付きで文書化します。

于 2012-08-28T20:46:59.087 に答える
8
const
  ArrayBits = 10;
  ArraySize = 1 shl ArrayBits;

shlbの値はa*2 ^ bに等しいため、1shlArrayBitsは2^ArrayBitsに等しくなります。

于 2012-08-28T20:46:04.433 に答える