前回の【初心者用】はじめてのC言語1では、環境構築と画面表示についての解説を行いました。
今回は四則演算から解説していければと思います。
【初心者用】はじめてのC言語2
1. 四則演算
前回printf関数にて数字を画面表示しましたが、計算した値を表示することも可能です。
C言語で演算に使用できる記号は下記になります。
1-1. 算術演算子一覧
・+:加算演算子、足し算
・-:減算演算子、引き算
・*:乗算演算子、掛け算
・/:除算演算子、割り算
・%:余り、端数計算
上記の記号を用いて下記にて実際どのような動きになるのか見てみましょう。
実行結果
15
9
36
4
2
続いて複雑な計算ができるか見てみましょう。
実行結果
14.000000
8.000000
33.000000
3.666667
上記のように実数としても計算できます。
余り算は実数の為、余りが出ないため使用できません。
・-:減算演算子、引き算
・*:乗算演算子、掛け算
・/:除算演算子、割り算
・%:余り、端数計算
上記の記号を用いて下記にて実際どのような動きになるのか見てみましょう。
#include <stdio.h>
int main(void)
{
printf("%d\n",12 + 3); //足し算
printf("%d\n",12 - 3); //引き算
printf("%d\n",12 * 3); //掛け算
printf("%d\n",12 / 3); //割り算
printf("%d\n",12 % 5); //余り
return 0;
}
実行結果
15
9
36
4
2
続いて複雑な計算ができるか見てみましょう。
#include <stdio.h>
int main(void)
{
printf("%d\n",(16 * 5) / (90 / 9)); //複雑な計算
return 0;
}</code></pre>
実行結果
8
電卓と同じように計算できることがわかります。
続いて実数の計算もしていきます。
<pre><code>#include <stdio.h>
int main(void)
{
printf("%f\n",11.0 + 3.0); //足し算
printf("%f\n",11.0 - 3.0); //引き算
printf("%f\n",11.0 * 3.0); //掛け算
printf("%f\n",11.0 / 3.0); //割り算
return 0;
}
実行結果
14.000000
8.000000
33.000000
3.666667
上記のように実数としても計算できます。
余り算は実数の為、余りが出ないため使用できません。
2. 条件判断
条件判断式if文の説明をします。
if文はプログラミングで一番使用するといっても過言ではないので、わからない場合は何度も見返して、頭に入れるようにしましょう。
if文の基本的な書式は下記になります。
if(条件式)
{
条件式成立時に処理される文
};
if文の条件式の条件は0が偽(不成立)で、0以外が真(成立)となります。
実際の例を見てみましょう。
例1 条件式成立パターン
#include <stdio.h>
int main(void)
{
if(1)
{
printf("この条件式は成立しています\n"); //足し算
}
printf("処理を終了します");
return 0;
}
実行結果
この条件式は成立しています
処理を終了します
if文の条件式が成立しているので、「この条件式は成立しています」と表示されます。
例2 条件式不成立パターン
#include <stdio.h>
int main(void)
{
if(0)
{
printf("この条件式は成立しています\n"); //足し算
}
printf("処理を終了します");
return 0;
}
実行結果
処理を終了します
if文の条件式が成立していないので、「この条件式は成立しています」は表示されません。
3. 等値演算子
等値演算子とは「=」や「!=」など左辺と右辺を比較して、等しいか等しくないかを判断する演算子です。
実際の例を見ていきましょう。
例1 条件式に等号を使用したパターン
実行結果
num1は10です
処理を終了します
上記の条件式では「==」という記号を使用していますが、C言語ではこれが等しいの記号にあたります。
「=」はC言語では右辺の値を左辺に代入するという意味になります。
例2 条件式に不等号を使用したパターン
実行結果
num1は10ではありません
処理を終了します
実際の例を見ていきましょう。
例1 条件式に等号を使用したパターン
#include <stdio.h>
int main(void)
{
int num1 = 10;
if(10 == num1)
{
printf("num1は10です\n");
}
printf("処理を終了します");
return 0;
}
実行結果
num1は10です
処理を終了します
上記の条件式では「==」という記号を使用していますが、C言語ではこれが等しいの記号にあたります。
「=」はC言語では右辺の値を左辺に代入するという意味になります。
例2 条件式に不等号を使用したパターン
#include <stdio.h>
int main(void)
{
int num1 = 11;
if(10 != num1)
{
printf("num1は10ではありません\n");
}
printf("処理を終了します");
return 0;
実行結果
num1は10ではありません
処理を終了します
4. 関係演算子
関係演算子とは左辺と右辺を比べて小さいか大きいかを比較する演算子になります。
下記のような種類があります。
・<:左辺の値が右辺より小さい時は真それ以外は偽となる。
・>:左辺の値が右辺より大きい時は真それ以外は偽となる。
下記は関係演算子と等値演算子を合わせた記号になります。
・<=:左辺の値が右辺より小さいまたは等しい時は真それ以外は偽となる。
・>=:左辺の値が右辺より大きいまたは等しい時は真それ以外は偽となる。
実際の例を見ていきましょう。
例1 条件式に「<」を使用したパターン
#include <stdio.h>
int main(void)
{
int num1 = 11;
if(10 < num1)
{
printf("num1は10より大きいです\n");
}
printf("処理を終了します");
return 0;
実行結果
num1は10より大きいです
処理を終了します
例1 条件式に「>」を使用したパターン
#include <stdio.h>
int main(void)
{
int num1 = 9;
if(10 > num1)
{
printf("num1は10より小さいです\n");
}
printf("処理を終了します");
return 0;
実行結果
num1は10より小さいです
処理を終了します
5. 論理演算子
上項までif文だと1つの条件式だけしか判断できませんが、論理演算子を使用すれば複数の条件式を使い判断できるようになります。
下記のように繋げることができます。
論理演算子には下記の種類があります。
・&&:AND演算子、右と左の条件式がどちらとも真の場合、真それ以外は偽
・||:OR演算子、右と左のどちらかが真の場合、真、両方が偽の場合は偽
・!:NOT演算子、条件式の結果を逆にする演算子、あまり使用したことがない…
実際の例を見てみましょう。
例1 条件式が「&&」で繋がっている場合
実行結果
num1は5~15の間の値です
処理を終了します
例1 条件式が「||」で繋がっている場合
実行結果
num1は5より小さいまたは15より大きい
処理を終了します
例のソースでは条件式は2つ繋がっていますが、2個以上を繋げて書くこともできます。
下記のように繋げることができます。
if(条件式) && (条件式)
{
条件式が成立した時に実行される処理
}
論理演算子には下記の種類があります。
・&&:AND演算子、右と左の条件式がどちらとも真の場合、真それ以外は偽
・||:OR演算子、右と左のどちらかが真の場合、真、両方が偽の場合は偽
・!:NOT演算子、条件式の結果を逆にする演算子、あまり使用したことがない…
実際の例を見てみましょう。
例1 条件式が「&&」で繋がっている場合
#include <stdio.h>
int main(void)
{
int num1 = 10;
if((5 < num1) && (15 > num1))
{
printf("num1は5~15の間の値です");
}
printf("処理を終了します");
return 0;
}
実行結果
num1は5~15の間の値です
処理を終了します
例1 条件式が「||」で繋がっている場合
#include <stdio.h>
int main(void)
{
int num1 = 3;
if((5 > num1) || (15 < num1))
{
printf("num1は5より小さいまたは15より大きい");
}
printf("処理を終了します");
return 0;
}
実行結果
num1は5より小さいまたは15より大きい
処理を終了します
例のソースでは条件式は2つ繋がっていますが、2個以上を繋げて書くこともできます。
6. まとめ
今回は四則演算、条件分岐のif文の説明、if文に使用される様々な演算子について解説しました。
次回はif文以外の条件式や構造体や共用体などの説明がしていけたら良いなと思います。