問題タブ [unions]

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.

0 投票する
5 に答える
7381 参照

c - 関数パラメーターでの共用体の使用

私は最近、何かがコンパイルされることを発見しました(それが合法かどうかはわかりませんが)。私のそのようなものの必要性はこれから来ます:私のプロジェクトは選択されたアーチのマシンコードを出力します(これはプログラムを実行しているものと同じアーチであるかもしれないし、そうでないかもしれません)。したがって、今すぐ最大64ビットアーキテクチャをサポートしたいと思います(既存の32ビットおよび16ビットアーチもサポートします)。現在の解決策は、new_stateの「ベース」をuint64_tにし、必要に応じて手動で16ビットと32ビットにキャストすることです。 。ただし、関数パラメーターで共用体をコンパイルできることを発見しました。したがって、これがコンパイルされる関数は次のとおりです。

この種のことは、他のコンパイラによってサポートされていますが、まったく「合法」ですか?また、ユニオンを作成してこのユニオンをnew_stateに渡さずに、この関数を呼び出す方法を理解することはできません。

0 投票する
3 に答える
1369 参照

c++ - 集約ユニオンの初期化

私は組合を持っています:

作成したい:

それぞれの値を異なるタイプに初期化します:u1-> int16 u2-> float

それ、どうやったら出来るの ?上記が不可能な場合、回避策はありますか?

0 投票する
8 に答える
4290 参照

c++ - 奇妙な C++ ブール値のキャスト動作 (true!=true)

大学の内部スレッドを読んでください。

したがってabw.bはすべて として宣言されboolます。ais assigned 1bis assigned 2、および の内部表現が( を使用して)w.bに変更されます。2union

このように、 と のすべてはになりaますが、とは等しくないので、これは宇宙が壊れていることを意味する可能性があります ( )bw.btrueaw.btrue!=true

この問題は実用的というよりも理論的なものであることはわかっています (SAKE プログラマーは a の内部表現を変更したくないbool) が、ここに質問があります。

  1. これでいいですか?(これは g++ 4.3.3 でテストされました)つまり、コンパイラは、ブール値の比較中にゼロ以外の値が true を意味する可能性があることに注意する必要がありますか?
  2. このコーナーケースが実際の問題になる可能性があるケースを知っていますか? (たとえば、ストリームからバイナリ データをロードするとき)

編集:

三つのこと:

  1. bool大きさintが違うので大丈夫です。しかし、char代わりにint. またはいつsizeof(bool)==sizeof(int)

  2. 可能であれば、私が尋ねた2つの質問に答えてください。私の正直な意見では、組み込みシステム (8 ビット システムである可能性があります) では、これは本当の問題である (またはそうでない) 可能性があるためです。

  3. 新しい質問: これは本当に未定義の動作ですか? はいの場合、なぜですか? そうでない場合、なぜですか?仕様にブール比較演算子に関する仮定はありませんか?

0 投票する
8 に答える
2625 参照

c - C 構造体/共用体の移植性に関する懸念

外部ライブラリから次のタイプがあるとします。

次のコード フラグメントが、さまざまなプラットフォームやさまざまなコンパイラで期待どおりに機能すると想定しても安全ですか?


編集:

厳密なエイリアシングの提案に従って、次のテストを行いました。

上記の一見問題のないコードは信頼できません。

開発者に平和はありません...

0 投票する
2 に答える
11457 参照

c++ - C ++での集合の結合、共通部分、または差異の取得

C ++セットの使用方法についていくつか質問があります(std :: set)

  1. 2つのC++セットの和集合、共通部分、または差を取得する方法はありますか?(それを行うために独自の関数を作成するのは非常に簡単ですが、そのための組み込み関数があるかどうかを知りたかったのです)

  2. C ++セットをマップのキーとして使用できますか?

0 投票する
4 に答える
402 参照

c++ - オブジェクトが 32 バイトではなく 64 バイトを占めるのはなぜですか?

私は次のようなクラスを持っています:

今、頂点バッファでこのタイプを使用したいのですが、sizeof()期待どおりではありません。クラスを 16 バイトに揃えました。

sizeof(myType)64が得られます。

sizeof(myType::myType-internal_t)32が得られます。

データ配置に関する記事をかなり読んだことがありますが、余分なデータをどこで使用しているのかわかりません。カスタムコンストラクターを削除しようとしましたが、同じままです。クラスキーワードを交換しstructても変更されません(たまたま、それが何のためにあるのかわかりません!)

これは面倒です。データに頻繁に触れることはないので、ここでは internal 型を使用しますが、クラスが希望どおりに機能することは素晴らしいことです。

0 投票する
4 に答える
593 参照

c++ - quadTree & ユニオンの問題

i は次の四分木のような構造を持ち、各セルは内部ノードまたはリーフのいずれかになります。葉であれば、色を保存できます。内部ノードの場合は、4 つの子 (リーフまたは内部ノードのいずれか) へのポインターを格納します。

セルが内部ノードの場合、色を保存する必要はありません。葉の場合、子へのポインターを格納する必要はありません。したがって、色と子は同じメモリ (結合) を共有する必要があります。

葉を内部ノードに変換し、現在のセルが現在持っているのと同じ色で子 (葉) を作成する関数 split() があります。

今、関数 split() をデバッグしています。私は行にデバッグポイントを設定します

だから今:デバッガーはこの行で停止し、メンバー値を観察します。行が実行されるように手順ステップを実行します(命令カーソルは次の行にあります)。行が実行された後、children[0] のポインター値は同じままです。代わりに、children[2] のポインタ値が (float 値 b とともに) 変更されました。

誰かが私にこの振る舞いを説明できますか?? 私は何を間違っていますか?

ありがとう!

0 投票する
5 に答える
1336 参照

c++ - ユニオン U は記憶の中でどのように見えますか?

私は、C++ での Union のこの全体的な考えにとても混乱しています。この「myUnion」はメモリ内でどのように見えますか?? データが同じメモリ ブロックを共有していることはわかっていますが、どうすればよいでしょうか? 「myUnion」のサイズは?「u5」のサイズである場合、このメモリブロックにデータはどのように割り当てられますか??

0 投票する
1 に答える
5437 参照

c++ - C++ のベクトル、共用体、およびポインターに関する質問

私が持っている質問は宿題の質問ではありませんが、課題でこれらの概念を使用することを検討しています. コンテキストは次のとおりです。いくつかのユニオン インスタンスを追跡する必要があり、それらはクラス変数として自分のクラスの 1 つで自分のユニオンに属しています。(注: ユニオン インスタンスの数は不明であるため、固定数のユニオン インスタンスを持つことはできません。

  1. Q1: MyUnion などのユニオンがあり、このユニオンの多くのインスタンスがある場合、それらを次のようなベクトルに入れることはできますか?

    /li>
  2. Q2: 共用体のポインタを持つことは有効ですか? お気に入り

    /li>
  3. Q3: 実装で共用体ポインターのベクトルを使用することを検討していますが、この概念は正しいですか? また、C ++での通常のアプローチですか?デザインを再考する必要がありますか?

0 投票する
6 に答える
3175 参照

c++ - c++でユニオンインスタンスを動的に作成する方法は?

ユニオンの複数のインスタンスをクラス変数として持つ必要があるのですが、ヒープにユニオン インスタンスを作成するにはどうすればよいでしょうか? ありがとうございました