この進行中のCプログラミングチュートリアルシリーズでは、算術演算子、論理演算子、関係演算子などの基本的なもののほか、「if」や「while」などの条件付きループについてすでに説明しました。さらに、このチュートリアルでは、代入演算子(=以外)と条件式に焦点を当てます。
代入演算子から始めましょう。これまでに基本的なCプログラムを作成したことがある場合(特にチュートリアルシリーズを実行した後に作成することになると思います)、次のようなことを行った可能性が高くなります。
a = a + 1;
でしょ?
今日学習する新しいことは、この式を次のように書き直すことができるということです。
a += 1;
はい、+ =は演算子であり、代入演算子とも呼ばれます。
さて、このような代入演算子を使用するとコードがよりコンパクトで読みやすくなると言うと、使用した例のコンテキストでは、インクリメント演算子も同様に優れていると主張する人もいるかもしれません。 'は1増加します。
a++;
同意しますが、次のような他のシナリオを考えてください。
b = b + 10;
b = b + c
このような場合、代入演算子を使用すると、コードの記述、読み取り、およびレビューが1ステップ簡単になります。
まだ納得できませんか?おそらく、次の一般的な例は、代入演算子の値についてさらに良いアイデアを与えるでしょう。ご覧ください:
arr1[arr2[integer1 + integer2] + arr3[integer3 + integer4] + arr4 [integer5 + integer6]] = arr1[arr2[integer1 + integer2] + arr3[integer3 + integer4] + arr4 [integer5 + integer6]] + 5
このコード行は、2つの配列(=演算子の両側)が同じ値を参照しているかどうかを確認する必要があるため、具体的に理解するには時間がかかります。この場合はそうなので、次のように代入演算子を使用するのがより良い方法です。
arr1[arr2[integer1 + integer2] + arr3[integer3 + integer4] + arr4 [integer5 + integer6]] += 5;
したがって、この場合に代入演算子を使用すると、行が非常に理解しやすくなるだけでなく、コンパイラーが効率的なコードを生成するのに役立つという意味で、コンパイラーにとってより使いやすくなります。
代入演算子が便利であるという事実について確信が持てたので(本当にそう願っています)、対応する二項演算子を持つ演算子のリストを次に示します。
+ - * / % << >> & ^ |
これまでのチュートリアルですでに説明したリストの最初の5つの演算子。最後の5つはビット演算子であり、今後のチュートリアルの1つでそれらについて説明します。一方、これらの演算子のいくつかに対応する代入演算子のクイックリファレンスは次のとおりです。
a += b;
a -= b;
a *= b;
a /= b;
a %= b;
したがって、一般的に、次の点に注意してください。
expression1 = (expression1) op (expression2)
次のように表すことができます:
expression1 op= expression2
ここで、「op」は、+、-、*などの使用中の演算子です。
次の式とそれに類似した式に注意してください。
a *= b - c
次のように展開されます:
a = a * (b-c)
少なくとも基本的なレベルでは、代入演算子の概念を明確にできたと思います。次に、条件式について簡単に説明しましょう。
次の例を見てください:
if(a==b)
c = c + 1;
else
c = c - 1;
条件式は、このようなロジックを1行で記述するのに役立ちます。方法は次のとおりです。
c = (a==b) ? (c+1) : (c -1)
したがって、ここでは、最初に条件(a ==b)がチェックされます。 trueの場合、(c + 1)がcに割り当てられ、そうでない場合は(c-1)がcに割り当てられます。わかりやすくするためのサンプルコードは次のとおりです。
int main()
{
int a = 6, b = 5, c = 9;
c = (a==b) ? (c+1) : (c -1) ;
printf("\n %d \n", c);
return 0;
}
ここではaがbと等しくないため、cが割り当てられます(c-1)。これは、cの新しい値が8になることを意味します。必要な場合に備えて、条件式の一般的な形式を次に示します。
expression1 ? expression2 : expression3
代入演算子と条件式についての基本的な考え方を理解していただければ幸いです。現在、これらを日常のコーディングアクティビティで使用することをお勧めします。何らかの問題が発生した場合は、ここにコメントを残すことを忘れないでください。