-
Cでのエスケープシーケンス
多くのプログラミング言語は、エスケープシーケンスと呼ばれる概念をサポートしています。文字の前に円記号(\)が付いている場合、それはエスケープシーケンスと呼ばれ、コンパイラにとって特別な意味を持ちます。たとえば、次のステートメントの\ nは有効な文字であり、改行文字と呼ばれます- char ch = '\n'; ここで、文字nの前にはバックスラッシュ(\)が付いています。これは改行である特別な意味を持ちますが、バックスラッシュ(\)は数文字だけの特別な意味があることに注意してください。次のステートメントは、Cプログラミングでは意味を伝えず、無効なステートメントと見なされます-
-
Cでの長いデータ型の必要性
CまたはC++には、整数型データに使用される4つの異なるデータ型があります。これらの4つのデータ型は、short、int、long、およびlonglongです。これらのデータ型はそれぞれ、異なるメモリスペースを使用します。サイズは、アーキテクチャやオペレーティングシステムによって異なります。 intは4バイトかかる場合もあれば、2バイトかかる場合もあります。これはコンパイラーでも起こります。したがって、クロスコンパイラを使用できます。 クロスコンパイラは基本的にコンパイラであり、現在のプラットフォーム以外のプラットフォーム用にコンパイルすることができます。 したがって、次のコードを32ビッ
-
Cの定数修飾子
const修飾子を使用して、変数を定数として宣言します。つまり、変数が初期化されると、値を変更することはできません。 constを使用すると、非常に大きなメリットがあります。たとえば、PIの値が一定である場合、プログラムのどの部分もその値を変更することは望ましくありません。したがって、それを定数として宣言する必要があります。 const修飾型で宣言されたオブジェクトは、コンパイラによって読み取り専用メモリに配置される可能性があり、constオブジェクトのアドレスがプログラムに取り込まれない場合は、まったく格納されない可能性があります。たとえば、 例 #include<stdio.h&g
-
Cのスキャンセット
Cのスキャンセットとは何ですか。スキャンセットは基本的に、scanfファミリ関数でサポートされている指定子です。 %[]で表されます。スキャンセット内では、1文字または文字セット(大文字と小文字を区別)のみを指定できます。スキャンセットが処理されるとき、scanf()はスキャンセットで言及されている文字のみを処理できます。 例 #include<stdio.h> int main() { char str[50]; printf("Enter something: "); scanf(
-
CおよびC++のコンマ
CまたはC++では、コンマ「、」はさまざまな目的で使用されます。ここでは、それらの使用方法を確認します。 オペレーターとしてのコンマ。 コンマ演算子は二項演算子であり、最初のオペランドを評価してから結果を破棄し、次に2番目のオペランドを評価して値を返します。コンマ演算子は、CまたはC++で最も優先順位が低くなります。 例 #include<stdio.h> int main() { int x = (50, 60); int y = (func1(), func2()); } ここでは、60がxに割り当てら
-
Cの負の数のモジュラス
ここでは、モジュラスを取得するために負の数を使用した場合の結果を確認します。アイデアを得るために、次のプログラムとその出力を見てみましょう。 例 #include<stdio.h> int main() { int a = 7, b = -10, c = 2; printf("Result: %d", a % b / c); } 出力 Result: 3 ここで、%と/の優先順位は同じです。したがって、%は最初は機能しているので、%bは7を生成し、cで除算した後、3を生成します。ここで%bの場合、左オペランド
-
xを出力するCマクロPRINT(x)を記述します
ここでは、PRINT(x)というマクロを定義する方法を説明します。これにより、引数として渡されたxの値が何であれ出力されます。 この問題を解決するために、stringize演算子を使用します。この演算子を使用すると、xが文字列に変換され、内部でprintf()関数を呼び出すことにより、xの値が出力されます。より良いアイデアを得るために例を見てみましょう。 例 #include <stdio.h> #define PRINT(x) printf(#x) int main () { PRINT(Hello); printf(&quo
-
Cの複数行マクロ
このセクションでは、Cで複数行マクロを作成する方法を説明します。関数のような複数行マクロを作成できますが、マクロの場合、各行は円記号「\」文字で終了する必要があります。中括弧「{}」を使用し、マクロが「}」で終了している場合、エラーが発生する可能性があります。したがって、すべてを括弧で囲むことができます。 複数行マクロについてのアイデアを得るには、次のプログラムを確認してください。 例 #include<stdio.h> #define PRINT(x, str) ({\ printf("The number %d", x);\ &n
-
C構造体とC++構造体の違い
ここでは、Cの構造体とC++の構造体の違いを確認します。 C ++構造は、ほとんどC++のクラスに似ています。 C構造体では、すべてのメンバーがパブリックですが、C ++では、デフォルトでプライベートです。その他の違いを以下に示します。 C構造体 C++構造 Cの構造体は、構造体の内部にメンバー関数を持つことはできません。 C ++の構造は、メンバー変数を持つメンバー関数を保持できます。 Cで構造データを直接初期化することはできません。 C++で構造データを直接初期化できます。 Cでは、構造体型変数を宣言するために「struct」キーワードを記述する必要があります。
-
Cの匿名ユニオンと構造
ここでは、Cの匿名の共用体と構造体について説明します。匿名の共用体と構造体は、名前のない共用体と構造体です。名前がないため、直接オブジェクトを作成することはできません。ネストされた構造またはユニオンとして使用します。 これらは匿名の組合と構造の例です。 struct { datatype variable; ... }; union { datatype variable; ... }; この例では、ポイントと呼ばれる1つの構造を作成しています。これは、匿名の構造を保持しています。これは
-
C言語の複合リテラル
このセクションでは、Cの複合リテラルとは何かを説明します。複合リテラルはCのC99標準で導入されています。この機能を使用すると、名前のないオブジェクトを作成できます。次の例では、複合リテラルを使用して名前のないオブジェクトを生成する方法を示します。 例 #include<stdio.h> struct point { int x; int y; }; void display_point(struct point pt) { printf("(%d,%d)\n", pt.x, pt.y
-
Cプログラムのメモリレイアウト
Cプログラムのメモリレイアウトは以下のようになります。いくつかのレベルがあります。これらは-です スタックセグメント ヒープセグメント テキストセグメント データセグメント 次に、これらのセクションの機能を見てみましょう。 Sr.No セクションと説明 1 スタック プロセススタックには、メソッド/関数パラメータ、差出人住所、ローカル変数などの一時データが含まれています。これは、自動変数と関数パラメーターに割り当てられたメモリーの領域です。また、関数呼び出しの実行中にリターンアドレスを格納します。スタックは、LIFO(後入れ先出し)メカニズムを使用して、ロー
-
free()は、割り当てを解除するメモリのサイズをどのように認識しますか?
free()関数は、malloc()、calloc()、およびrealloc()を使用して割り当てられている間、メモリの割り当てを解除するために使用されます。 freeの構文は単純です。ポインタでfreeを使用するだけです。その後、メモリをクリーンアップできます。 free(ptr); free()はパラメーターとしてサイズを取りませんが、ポインターのみを取ります。それで、問題は、free()関数が割り当てを解除するブロックのサイズをどのように知るのかということです。 メモリ割り当てに動的メモリ割り当て手法を使用する場合、これは実際のヒープセクションで行われます。要求されたサイズよりも1ワ
-
C /C++コードをアセンブリ言語に変換する
ここでは、gccを使用してCまたはC++ソースコードからアセンブリ言語出力を生成する方法を説明します。 gccは、実行中にソースコードからすべての中間出力を取得するための優れた機能を提供します。アセンブラ出力を取得するには、gccにオプション「-S」を使用できます。このオプションは、コンパイル後、アセンブラーに送信する前の出力を表示します。このコマンドの構文は次のとおりです。 gcc –S program.cpp では、出力方法を見てみましょう。ここでは、簡単なプログラムを使用しています。このプログラムでは、2つの数値が変数xとyに格納され、合計が別の変数に格納された後、結果が
-
Cでのマクロと関数
このセクションでは、Cのマクロと関数の違いを確認します。マクロは前処理されているため、コンパイル中にすべてのマクロが前処理されることを意味します。関数は前処理されませんが、コンパイルされます。 マクロではタイプチェックが行われないため、さまざまなタイプの入力で問題が発生する可能性があります。関数の場合、これは行われません。また、マクロの場合、入力が適切に維持されていないと、無効な結果が生成される可能性があります。次のプログラムをチェックして、問題について考えてください。 例 #include <stdio.h> #define SQUARE(x) x * x int sqr(in
-
Cでconst変数を変更する方法は?
CまたはC++では、定数変数を使用できます。定数変数の値は、初期化後に変更することはできません。このセクションでは、いくつかの定数変数の値を変更する方法を説明します。 定数変数の値を変更したい場合は、コンパイル時エラーが発生します。より良いアイデアを得るために、次のコードを確認してください。 例 #include <stdio.h> main() { const int x = 10; //define constant int printf("x = %d\n", x); x =
-
C / C ++のwcspbrk()関数
wcspbrk()関数は、CまたはC++の組み込み関数です。ワイド文字列に存在するワイド文字のセットを別のワイド文字列で検索します。この関数はcwharヘッダーファイルに含まれています。 この関数は2つの引数を取ります。最初の引数は宛先であり、2番目の引数はソースです。宛先として、検索するnullで終了するワイド文字列を渡す必要があります。ソースとして、検索される文字を含むnullで終了するワイド文字列を渡す必要があります。 この関数は2つの値を返します。 1つまたは複数のワイド文字が存在する場合、この関数は、宛先およびsrcの最初のワイド文字へのポインターを返します。宛先またはソースにワ
-
C /C++の初期化されていないプリミティブデータ型
最もよくある質問の1つは、CまたはC++の初期化されていないプリミティブデータ値の値はどうなるかということです。答えはシステムによって異なります。コンパイラーが変数に0を割り当てると想定できます。 0の整数、浮動小数点0.0の場合は実行できますが、文字型データの場合はどうなりますか? 例 #include <iostream> using namespace std; main() { char a; float b; int c; double d;
-
Cプログラムはどのように実行されますか?
ここでは、Cプログラムがシステムでどのように実行されるかを見ていきます。これは基本的にCプログラムのコンパイルプロセスです。 次の図は、Cソースコードの実行方法を示しています。 上の図には、さまざまなステップがあります- Cコード −これはあなたが書いたコードです。このコードはプリプロセッサセクションに送信されます。 前処理 −このセクションでは、プリプロセッサファイルがコードに添付されています。 stdio.h、math.hなどのさまざまなヘッダーファイルを使用しています。これらのファイルはCソースコードで添付され、最終的なCソースが生成します。 (「#include」、「
-
C /C++プログラムをプリプロセッサコードに変換する
ここでは、CまたはC++プログラムのソースコードから前処理またはプリプロセッサコードを生成する方法を説明します。 g ++コンパイラを使用して前処理されたコードを表示するには、g++で「-E」オプションを使用する必要があります。 プリプロセッサは、コードにすべての#ディレクティブを含め、MACRO関数も拡張します。 構文 g++ -E program.cpp 例 #define PI 3.1415 int main() { float a = PI, r = 5;