-
C /C++でのプリインクリメントとポストインクリメント
ここでは、CまたはC++でのプリインクリメントとポストインクリメントが何であるかを確認します。 pre-incrementとpost-incrementはどちらもインクリメント演算子です。ただし、違いはほとんどありません。 pre-increment演算子は、最初に変数の値をインクリメントしてから、それを他の変数に割り当てて送信しますが、post-incrementの場合は、最初に変数に割り当ててから、値を増やします。 例 #include<iostream> using namespace std; main() { int x, y, z; &nbs
-
Cでの整数値と文字値の格納
プログラムでは、整数変数と文字変数を何度も使用しています。ここでは、それらがメモリにどのように保存されるかを確認します。 Cでは、文字値も整数として格納されます。次のコードでは、270を文字型データに入れます。したがって、270に相当するバイナリは100001110ですが、右から最初の8ビットのみを取ります。したがって、結果は(00001110)、つまり14になります。次に、値を変数aに格納します。また、オーバーフローの警告も表示されます。 次の変数yでは、-130などの負の数を格納しようとしています。負の数は、2の補完メソッドとして保存されます。したがって、130のバイナリは(10000
-
Cで0または1の変数の暗黙的な初期化
コードで使用する前に、変数を宣言する必要があることはわかっています。ただし、変数は宣言なしで0または1で割り当てることができます。次の例では、これを確認できます。 例 #include <stdio.h> #include <stdlib.h> x, y, array[3]; // implicit initialization of some variables int main(i) { //The argument i will hold 1 int index; printf(&quo
-
CまたはC++の関数のアドレス
CまたはC++では、変数はメモリに格納されるため、それらのメモリアドレスを取得できます。同様に、関数もメモリに格納されるため、いくつかのアドレスもあります。アドレスを取得するには、括弧を使用せずに関数名のみを使用できます。 明確なアイデアを得るには、次のプログラムを確認してください。 例 #include <stdio.h> void my_function() { printf("Hello World"); } int main() { printf("The address of the my
-
C言語のintに複数の文字を割り当てる
文字型データは、ASCII値によってCまたはC++の内部に格納されます。 1文字を整数として出力する場合は、ASCII値を取得します。ただし、一重引用符を使用して複数の文字を印刷しようとすると、奇妙な出力が出力されます。 アイデアを得るには、次のプログラムを確認してください。 例 #include <stdio.h> int main() { printf("%d\n", 'A'); printf("%d\n", 'AA'); pr
-
Cでのmbtowc関数
Cライブラリ関数intmbtowc(whcar_t * pwc、const char * str、size_t n) マルチバイトシーケンスをワイド文字に変換します。 以下はmbtowc()関数の宣言です。 int mbtowc(whcar_t *pwc, const char *str, size_t n) パラメータは-です pwc −これはwchar_t型のオブジェクトへのポインタです。 str −これはマルチバイト文字の最初のバイトへのポインタです。 str −これはマルチバイト文字の最初のバイトへのポインタです。 n -これは、文字長をチェ
-
Cでの可変長引数
場合によっては、事前定義された数のパラメーターの代わりに、可変数の引数、つまりパラメーターを受け取ることができる関数が必要な状況に遭遇することがあります。 C / C ++プログラミング言語はこの状況の解決策を提供し、要件に基づいて可変数のパラメーターを受け入れることができる関数を定義することができます。次の例は、そのような関数の定義を示しています。 int func(int, ... ) { . . . } int main() { func(1, 2, 3);
-
浮動小数点数を丸める1行のC関数を記述します
ここでは、浮動小数点数を丸めることができる1行のC関数の記述方法を説明します。この問題を解決するには、次の手順に従う必要があります。 番号を取得 数値が正の場合は、0.5を追加します それ以外の場合は、0.5を引きます 型キャストを使用して浮動小数点値を整数に変換します 例 #include <stdio.h> int my_round(float number) { return (int) (number < 0 ? number - 0.5 : number + 0.5); } int main () { &nbs
-
main()でprintf()の出力を変更するにはどうすればよいですか?
ここでは、printf()関数の出力をmain()から変更する方法を説明します。ここでは、指定されたタイプのすべてのprintf()ステートメントを別のタイプに変更する関数を定義します。 このタスクを実行するには、#defineマクロを使用します。このマクロは関数内で定義されます。関数で使用せずに#define行を直接配置できますが、その場合は常にprintf()が変更されます。 mainを使用して制御するには、最初に関数を呼び出す必要があります。 例 #include <stdio.h> void changePrintf() { //always any printf wil
-
Cの関数にかかる時間を測定する方法は?
ここでは、プロセスにかかる時間を計算する方法を説明します。この問題には、clock()関数を使用します。 clock()はtime.hヘッダーファイルにあります。 経過時間を取得するには、タスクの開始時と終了時にclock()を使用して時間を取得し、値を減算して差を取得します。その後、差をCLOCK_PER_SEC(1秒あたりのクロックティック数)で割って、プロセッサ時間を取得します。 例 #include <stdio.h> #include <time.h> void take_enter() { printf("Press e
-
Cのsetjump()とlongjump()
このセクションでは、Cのsetjumpとlongjumpを確認します。setjump()とlongjump()は、setjmp.hライブラリにあります。これら2つの関数の構文は次のようになります。 setjump(jmp_buf buf) : uses buf to store current position and returns 0. longjump(jmp_buf buf, i) : Go back to place pointed by buf and return i. これらは、例外処理のためにCで使用されます。 setjump()はtryブロックとして使用でき、longju
-
trunc()、truncf()、C言語のtruncl()
ここでは、3つの機能を確認します。これらの関数は、trunc()、truncf()、およびtruncl()です。これらの関数は、浮動小数点値を切り捨てられた形式に変換するために使用されます。 trunc()関数 この関数は、double型の値を切り捨てるために使用されます。そして、整数部分のみを返します。構文は次のようになります。 double trunc(double argument) 例 #include <stdio.h> #include <math.h> main() { double a, b, x, y; &n
-
Cを使用した2つのfloatまたはdouble数のモジュラス
ここでは、Cで2つのフローティングまたはダブルタイプのデータのモジュラスを取得する方法を説明します。モジュラスは基本的に余りを見つけることです。このために、Cでremainder()関数を使用できます。remainder()関数は、分子/分母の浮動小数点の剰余を計算するために使用されます。 したがって、剰余(x、y)は次のようになります。 remainder(x, y) = x – rquote * y rquoteはx/yの値です。これは、最も近い整数値に丸められます。この関数は、double型、float型、long double型の2つの引数を取り、引数として指定された同
-
ホスト名とIPアドレスを表示するプログラムC
このセクションでは、ローカルシステムのホスト名とIPアドレスを簡単に確認する方法を説明します。ホスト名とIPを見つけるためのCプログラムを作成します。 以下の関数のいくつかが使用されます。これらの関数には別のタスクがあります。機能とそのタスクを見てみましょう。 関数 説明 gethostname() ローカルコンピューターの標準のホスト名を検索します。 gethostbyname() ホストデータベースからホスト名に対応するホスト情報を検索します iten_ntoa() IPv4インターネットネットワークアドレスをドット付き10進形式のASCII文字列に変換します
-
Cでループ、再帰、マクロ展開を使用せずに数値を100回出力する
このセクションでは、Cで数値を100回印刷する方法を説明します。いくつかの制約があります。ループ、再帰、マクロ展開は使用できません。 この問題を解決するために、Cでsetjumpとlongjumpを使用します。setjump()とlongjump()はsetjmp.hライブラリにあります。これら2つの関数の構文は次のようになります。 例 #include <stdio.h> #include <setjmp.h> jmp_buf buf; main() { int x = 1; setjmp(buf); //set
-
C / C ++でint[]のサイズを見つける方法は?
このセクションでは、CまたはC++で整数配列のサイズを取得する方法を説明します。 int []のサイズは、基本的にその配列内の要素の数を数えています。これを取得するには、sizeof()演算子を使用できます。配列名がsizeof()内で渡されると、配列が占有しているメモリブロックの合計サイズが返されます。これを各要素のサイズで割ると、要素の数を取得できます。 次の例を見て、より良いアイデアを得ましょう。 例 #include <iostream> using namespace std; int main() { int data[] = {11, 22
-
C /C++でintをASCII文字に変換します
CまたはC++では、文字値はASCII値として格納されます。 intをASCIIに変換するには、文字「0」のASCIIに整数を追加します。 intをASCII値に変換する例を見てみましょう。 例 #include<stdio.h> int intToAscii(int number) { return '0' + number; } main() { printf("The ASCII of 5 is %d\n", intToAscii(5)); printf(&quo
-
Cのprintfでの`%p`の使用は何ですか?
Cでは、さまざまなフォーマット指定子を見てきました。ここに、%pと呼ばれる別のフォーマット指定子が表示されます。これは、ポインタ型データを印刷するために使用されます。より良いアイデアを得るために例を見てみましょう。 例 #include<stdio.h> main() { int x = 50; int *ptr = &x; printf("The address is: %p, the value is %d", ptr, *ptr); } 出力 The address is
-
C / C ++での%pと%xの違い
ここでは、CまたはC ++での%pと%xの違いを確認します。 %pはポインター値を出力するために使用され、%xは16進値を出力するために使用されます。ただし、ポインタは%uまたは%xを使用して表示することもできます。 %pと%xを使用して値を出力する場合、大きな違いは感じられません。気付くことができる唯一の違いは、%pはいくつかの先行ゼロを出力しますが、%xは出力しないことです。 例 #include<stdio.h> main() { int x = 59; printf("Value using %%p: %p\n&
-
C qsort()とC ++ sort()
ここでは、Cのqsort()とC ++のsort()の違いを確認します。 Cは、配列のソートに使用できるqsort()関数を提供します。関数の引数と構文は次のようになります。 void qsort(void *base, size_t num, size_t size, int (*comparator) (const void*, const void*)); この関数は、その配列のベースアドレス、つまりその配列の要素数を取得します。配列内の各アイテムのサイズ、およびコンパレータ関数。 C ++はsort()関数を提供します。これはC++STL内にあります。引数と構文は次のようになりま