Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C / C ++ R値式のパズル?


ここでは、1つのパズルが表示されます。以下のようなプログラムがあるとしたら、何が出力されるのか、そしてその理由を教えなければなりませんか?

#include<iostream>
using namespace std;
int main() {
   int x = 0xab;
   ~x;
   cout << hex << x;
}

では、出力はどうなりますか? 〜xは補数演算を実行しています。それで、補完された結果を16進形式で表示しますか?

さて、出力は次のようになります

出力

ab

したがって、変更はありません。しかし、なぜ?その理由は、〜xがxをその補完形式に変換しているが、その値がどの変数にも割り当てられていないためです。式はR値式です。左辺値が使用されるまで、それはいくつかの変数に格納されません。 L値を入れるとこんな感じになります-

#include<iostream>
using namespace std;
int main() {
   int x = 0xab;
   x = ~x;
   cout << hex << x;
}

出力

ffffff54

  1. C / C ++のmemcpy()

    この記事では、C ++ STLでのmemcpy()関数の動作、構文、および例について説明します。 memcpy()とは何ですか? memcpy()関数は、C ++ STLに組み込まれている関数であり、ヘッダーファイルで定義されています。 memcpy()関数は、メモリのブロックをコピーするために使用されます。この関数は、あるメモリ位置から別のメモリ位置に値の数をコピーするために使用されます。 関数の結果は、データのバイナリコピーです。この関数は、終了ソースまたは終了ヌル文字をチェックせず、ソースからnumバイトをコピーするだけです。 例 void memcpy( void* destin

  2. C / C ++のAAツリー?

    コンピュータサイエンスのAAツリーは、順序付けられたデータを効率的に保存および取得するために実装されたバランスの取れたツリーの形式として定義されます。 AAツリーは、エントリの効率的な追加と削除をサポートするバイナリ検索ツリーの形式である赤黒ツリーのバリエーションとして扱われます。赤黒木とは対照的に、AAツリーの赤いノードは、左のサブチャイルドではなく、右のサブチャイルドとしてのみ追加できます。この操作の結果、2-3-4ツリーではなく2-3ツリーのシミュレーションが行われるため、メンテナンス操作が簡素化されます。赤黒木のメンテナンスアルゴリズムでは、ツリーのバランスを適切にとるために、7つの異