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

C / C ++でのコンマ演算子の質問?


C /C++プログラミング言語のコンマ演算子には2つのコンテキストがあります-

  • セパレーターとして-

  • 演算子として-コンマ演算子{、}は、(評価後に)最初の式を破棄してから2番目の式の値を使用する2項演算子です。この演算子の優先順位は最も低くなります。

次のコードを検討し、出力を推測します-

#include <stdio.h>
int main(void) {
   char ch = 'a', 'b', 'c';
   printf("%c", ch);
   return 0;
}

出力

セパレータとして機能するため、エラーが発生します。

prog.c: In function ‘main’:
prog.c:5:20: error: expected identifier or ‘(’ before 'b'
char ch = 'a', 'b', 'c';
^~~

#include <stdio.h>
int main(void) {
   char ch;
   ch = 'a','b','c';
   printf("%c", ch);
   return 0;
}

出力

それはaを与えます 「、」は演算子として機能するため、出力として機能しますが、優先順位は代入演算子よりも低いため、出力はaです。

a

#include <stdio.h>
int f1() {
   return 43;
}
int f2() {
   return 123 ;
}
int main(void) {
   int a;
   a = (f1() , f2());
   printf("%d", a);
   return 0;
}

出力

それは123を与えます ‘、’は演算子として機能し、中かっこで囲まれていると、2番目の式が機能して評価され、出力が得られます。

123

  1. C /C++三項演算子に関するいくつかの興味深い所見

    if..else句の代わりに三項演算子が実装されていることはわかっています。 ?:で表されます。 「?」 symbolはifpartと同等であり、:はelsepartと同等です。次の3つのプログラムは、三項演算子の場合のいくつかの興味深い観察を説明しています。 次のプログラムはエラーなしでコンパイルできます。三項式の戻り型は(exp2の場合と同様に)floatであることが期待され、exp3(つまり、リテラルゼロ-int型)は暗黙的にfloatに変換できます。 #include <iostream> using namespace std; int main(){   &

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

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