問題タブ [storage-class-specifier]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
intel - C言語のストレージクラスREGISTERで使用できるレジスタの数と種類
変数にすばやくアクセスするためにレジスタ ストレージ クラスが使用され、そのメモリは CPU に割り当てられます。ただし、CPU のレジスタは限られています。Intel Core i5-4260U プロセッサを使用しています。レジスターの詳細については、インテルの Web サイトにアクセスしました。しかし、CPUに含まれるレジスタの数に関するそのような仕様は見つかりませんでした(Webサイトにアクセスするには、ここをクリックしてください)。レジスタの数を見つけることができたとしても(( 8086/8088にはいくつのレジスタがありますか? ))、これらのうちのいくつがcストレージクラスで使用されているかわかりませんでした。
c - レジスタ ストレージ クラスの実際のストレージを決定するのは誰ですか?
最近、私はインタビューで Q に続いて尋ねられました: レジスタ変数が格納される場所 (RAM またはレジスタ) を実際に決定するのは誰ですか?
私はグーグルで検索しました。コンパイラが決定した答えです。しかし、コンパイラはどのように決定できますか? 私の理解では、実行時に決定する必要があります。
別のマシンでプログラムをコンパイルして実行した場合、コンパイラはレジスタ ストレージ クラスの値を格納する場所をどのように決定できますか。
c++ - C++ の register キーワードの何が問題になっていますか?
私はこれを読んでいましたが、registerキーワードは次の C++ 標準から削除される可能性が高いと書かれています。また、それregisterは 2011 年に廃止されたとも書かれています。では、registerストレージ クラス指定子の何が問題になっているのでしょうか。
最近のコンパイラは非常にスマートで、頻繁に使用される変数を速度 (高速アクセス) のために暗黙的に最適化し、それらを CPU レジスタに配置します。
ただし、C++ の専門家は、 を使用しない、または使用しないとも言っていますregister。registerでは、キーワードの問題点は何でしょうか。
c++ - C で register ストレージ クラスを常に使用できないのはなぜですか?
ストレージクラスをレジスタとして宣言すると、その可用性に応じてレジスタに格納されるという本を読みました。使用可能なレジスターがない場合は、デフォルトのストレージ タイプ 'auto' が割り当てられます。
ストレージ クラスを明示的に指定せずに変数を宣言すると、変数に割り当てられるデフォルトのストレージ タイプは「auto」自体になります。
したがって、私の質問は、すべての変数を「レジスタ」ストレージ クラスであると宣言しない理由です。使用可能なレジスタがない場合は、とにかくデフォルトの「自動」クラス自体として扱われます。幸いなことに、レジスターが使用可能であれば、1 つのレジスターに保管されます。& 演算子を使用できなくなったことは理解していますが、ポインターとアドレスを使用しない場合はどうすればよいでしょうか? これらの変数を 'register' ストレージ クラスで宣言できますか? これは悪い習慣のように思われるからです。
編集:ウェブを検索しましたが、「アドレスが利用できない」という点だけが言及されています。「レジスタ」で残りの変数を宣言できない理由については言及されていません。
c - C言語標準は、グローバルレジスタ変数のサポートを指定していますか?
gcc は、グローバル変数をレジスタ格納変数として定義するサポートを提供していると読みました。私が知りたいのは、標準にこのサポートの仕様があるかということです。
c++ - 可変変数のメモリ位置
C++ の可変変数について、次のような理解があります。
- 特別なストレージ クラスです。
- 可変変数は、定数オブジェクトによって変更できます。
- 変更可能な変数を使用したい場合の例は、特に要求されない限り、結果を取得するために高価な操作を実行したくない場合です。特に要求された場合、プログラムは操作を 1 回実行し、結果を可変変数にキャッシュします。
私の質問はメモリの観点からです。コンパイラは可変変数をメモリのどこに格納しますか? 変更可能であるため、確実に「読み取り専用」メモリにはなりません。
c - 「extern」ストレージクラスが関数で異なる動作をするのはなぜですか?
次のスニペットは正常に動作します
ここで私が得たのは、「i」が宣言されてから定義されていることです。定義は 1 つしかないので、まったく問題ありません。
さて、上記のものは次のエラーを出します
ここで何が問題なのですか?ここでも 'i' の定義は 1 つです。
function - out パラメーターは、値が暗黙的に再初期化される ref ですか?
Dlang は out パラメータを次のように説明します。
関数のエントリ時にその型の既定値で初期化されるパラメーター。
パラメータが関数エントリのデフォルト値で初期化された後、それは本質的に単なるref?
outと比較するドキュメントはありませんref。パラメータを記述からのショートカットとして
概念化することは正確ですか?out
私はその言語の複雑さを知らないので、このような印象を持っていると、将来不測の事態が発生した場合に悲しみに暮れるのではないかと心配しています.
これらをより明確に区別できますかparameter storage classes、それとも自動的に再初期化されるのは本当に ref パラメータですか?