C /C++のエラー
CまたはC++では、さまざまな種類のエラーに直面します。これらのエラーは、5つの異なるタイプに分類できます。これらは以下のようなものです-
- 構文エラー
- 実行時エラー
- リンカーエラー
- 論理エラー
- セマンティックエラー
これらのエラーを1つずつ見てみましょう-
構文エラー
この種のエラーは、C++の記述手法または構文の規則に違反した場合に発生します。この種のエラーは通常、コンパイル前にコンパイラーによって示されます。これらは、コンパイル時エラーと呼ばれることもあります。
この例では、1行の後にセミコロンを付けないと構文エラーが発生する方法を示します。
例
#include<stdio.h> main() { printf("Hello World") }
出力
Error] expected ';' before '}' token
ランタイムエラー
この種のエラーは、プログラムの実行中に発生します。これはコンパイルエラーではないため、コンパイルは正常に実行されます。数値を0で除算しようとすると、このエラーを確認できます。
例
#include<stdio.h> main() { int x = 52; int y = 0; printf("Div : %f", x/y); }
出力
Program crashes during runtime.
リンカーエラー
この種のエラーは、プログラムが正常にコンパイルされ、別のオブジェクトファイルをメインオブジェクトファイルにリンクしようとしたときに発生します。このエラーが発生した場合、実行可能ファイルは生成されません。たとえば、関数プロトタイプの誤り、ヘッダーファイルの誤りなどです。main()がMain()として記述されている場合、リンクエラーが生成されます。
例
#include<stdio.h> main() { int x = 52; int y = 0; printf("Div : %f", x/y); }
出力
C:\crossdev\src\mingw-w64-v3-git\mingw-w64-crt\crt\crt0_c.cundefined reference to `WinMain'
論理エラー
場合によっては、目的の出力が得られないことがあります。構文などが正しければ、論理的な問題により正しい出力が得られない場合もあります。これらは論理エラーと呼ばれます。ループの後にセミコロンを付けることがあります。これは構文的には正しいですが、1つの空白のループが作成されます。その場合、目的の出力が表示されます。
例
#include<stdio.h> main() { int i; for(i = 0; i<5; i++); { printf("Hello World"); } }
出力
Here we want the line will be printed five times. But only one time it will be printed for the block of code.
セマンティックエラー
この種のエラーは、構文的には正しいが意味がない場合に発生します。これは文法上の間違いのようなものです。代入演算子の左側に式が指定されていると、セマンティックエラーが発生する可能性があります。
例
#include<stdio.h> main() { int x, y, z; x = 10; y = 20; x + y = z; }
出力
[Error] lvalue required as left operand of assignment
-
C / C ++のmemcpy()
この記事では、C ++ STLでのmemcpy()関数の動作、構文、および例について説明します。 memcpy()とは何ですか? memcpy()関数は、C ++ STLに組み込まれている関数であり、ヘッダーファイルで定義されています。 memcpy()関数は、メモリのブロックをコピーするために使用されます。この関数は、あるメモリ位置から別のメモリ位置に値の数をコピーするために使用されます。 関数の結果は、データのバイナリコピーです。この関数は、終了ソースまたは終了ヌル文字をチェックせず、ソースからnumバイトをコピーするだけです。 例 void memcpy( void* destin
-
C / C ++のAAツリー?
コンピュータサイエンスのAAツリーは、順序付けられたデータを効率的に保存および取得するために実装されたバランスの取れたツリーの形式として定義されます。 AAツリーは、エントリの効率的な追加と削除をサポートするバイナリ検索ツリーの形式である赤黒ツリーのバリエーションとして扱われます。赤黒木とは対照的に、AAツリーの赤いノードは、左のサブチャイルドではなく、右のサブチャイルドとしてのみ追加できます。この操作の結果、2-3-4ツリーではなく2-3ツリーのシミュレーションが行われるため、メンテナンス操作が簡素化されます。赤黒木のメンテナンスアルゴリズムでは、ツリーのバランスを適切にとるために、7つの異