私は標準MLでそれを推測します:
- int は 32 ビット Linux では 32 ビットです
64 ビット Linux では int も 32 ビットですか? さらに、標準 ML について、さまざまなデータ型のサイズが概説されている場所 (url) はありますか? ありがとう
私は標準MLでそれを推測します:
64 ビット Linux では int も 32 ビットですか? さらに、標準 ML について、さまざまなデータ型のサイズが概説されている場所 (url) はありますか? ありがとう
整数のサイズは実装固有です。標準では指定されていません。MoscowML では、ドキュメントに従って、32 ビット プラットフォームでは 31 ビット整数を使用し、64 ビット プラットフォームでは 63 ビット整数を使用します。
SML/NJ は 64 ビット システムと 32 ビット システムの両方で 31 ビット整数を使用しているようです (明らかに、これはどこにも文書化されていないためです - 私は 64 ビット マシンでテストしただけです)。
MLton では-default-type
、コンパイラへのコマンド ライン引数を使用して Int のサイズを設定することもできます。
Int.precision
組み込み型のサイズを決定するために使用できますInt
。
型のサイズはInt
言語で定義されているのではなく、実装で定義されているため、探している答えはコンパイラ/インタープリターの選択によって異なります。
たとえば、Moscow ML は、32 ビット マシンでは 31 ビット整数を、64 ビット マシンでは 63 ビット整数を提供します。(ソース)
多くの実装ではいくつかの int 型が提供されており、そのうちのいくつかは任意の精度である可能性があることに注意してください。これらのそれぞれについて、対応するprecision
関数が存在し、その特定の型によって提供される精度が通知されます。
ハイエンドの SML 実装であるPoly/MLはデフォルトで無制限 (big) int を提供するため、何の心配もなく数学的な整数の忠実なモデルが得られることに注意してください (通常のシンボリック アプリケーションの正確さと効率の両方)。
32ビットまたは64ビットは、アドレスの次元を基準としています。したがって、データ型は同じサイズですが、64ビットシステムは64ビットを使用してメモリをアドレス指定するため、ポインタサイズが変更されます