今回は、基本的な 演算子 について、解説します。
代入演算子
「=」を使います。
変数に定数を代入したり、変数に変数を代入する時に使用します。
算術演算子
算術演算子とは、「+」「-」「*」「/」「%」です。それぞれ、加算、減算、乗算、除算、
余りを求めます。
計算の順序は、数学の場合と同じです。
整数同士の割り算の場合は、結果も整数になります。
この時には、小数点以下は切り捨てになります。
負数を含む「余り(%)」を計算する場合は、コンパイラによって異なります。
*/
/*
#include <stdio.h>
void main() {
int a, b, c;
printf( "\n\n");
printf("a の値を入力してください。");
scanf("%d", &a);
printf("b の値を入力してください。");
scanf("%d", &b);
printf( "\n\n");
printf( " a =%d b =%d \n\n", a, b );
c = a + b; printf( "c = a + b c = %d\n", c);
c = a - b; printf( "c = a - b c = %d\n", c);
c = a * b; printf( "c = a * b c = %d\n", c);
c = a / b; printf( "c = a / b c = %d\n", c);
c = a % b; printf( "c = a % b c = %d\n", c);
printf( "\n\n");
}
*/
/*
比較演算子
値が等しいか「==」、値が等しくないか「!=」、値が大きいか「>」「>=」
値が小さいか「<=」「<」を調べます
比較演算子 例 意 味
< a < b aはbより小さい
<= a <= b aはb以下
> a > b aはbより大きい
>= a >= b aはb以上
== a == b aはbと同じ
!= a != b aとbは異なる
比較が成り立つ場合は「真」(1)が、成り立たない場合は「偽」(0)となります。
比較の「==」と代入の「=」を間違えないでください。
以前に私もこれを、間違えて長い間プログラムが正常に働きませんでした。
よく注意してください。
*/
/*
#include <stdio.h>
void main() {
int a, b, c;
printf( "\n\n");
printf("a の値を入力してください。");
scanf("%d", &a);
printf("b の値を入力してください。");
scanf("%d", &b);
printf( "\n\n");
printf( " a =%d b =%d \n\n", a, b );
c = a > b; printf( "c = a > b c = %x\n", c);
c = a >= b; printf( "c = a >= b c = %x\n", c);
c = a < b; printf( "c = a < b c = %x\n", c);
c = a <= b; printf( "c = a <= b c = %x\n", c);
c = a == b; printf( "c = a == b c = %x\n", c);
c = a != b; printf( "c = a != b c = %x\n", c);
printf( "\n\n");
}
*/
/*
論理演算子
例 意 味
&& a && b AND(かつ)
|| a || b OR(または)
! !b NOT(否定)
*/
/*
#include <stdio.h>
void main() {
int a, b, c;
printf( "\n\n");
printf("a の値を入力してください。");
scanf("%d", &a);
printf("b の値を入力してください。");
scanf("%d", &b);
printf( "\n\n");
printf( " a =%d b =%d \n\n", a, b );
c = a && b; printf( "c = a && b c = %x\n", c);
c = a || b; printf( "c = a || b c = %x\n", c);
c = !b; printf( "c = !b c = %x\n", c);
c = ( b==30 ) && ( a<b ); printf( "c = (b==30) && (a<b) c = %x\n", c );
// これら論理演算子、比較演算子は、分かりにくい組み合わせになることがあるので、
// 括弧をつけて見やすくします。
// 括弧を外すと c = b==30 && a<b となって、なんだかよくわかりませんね。
printf( "\n\n");
}
*/
/*
2012.07.03 ( 平成24年7月3日 )Seiki Minami
定数は、どのように表すのだろうか。
整数定数
整数定数には
10進数 100 255 -50
16進数 0x43 0xFF
8進数 0105 0373
文字 'C'
8進数を表すには、最初に「0」を、16進数を表すには「0x」をつけます。文字はASCII文字1バイトです。
整数定数と言うよりは、1文字の定数として扱うことがほとんどですが、整数として扱うこともできます。
C言語では、文字という概念はなく、その文字に対応するASCIIコードという数字で扱います。
小数定数
小数は、「1.234」、「-0.123」のように書きます。
このような書き方では200万や1000万分の一などを書きたい場合は、よくありません。
そこで「1.0e8」や「1.453E-6」のように、10の何乗かで書きます。
「e」と「E」はどちらでも構いません。
円周率は、「3.1415」ですが、「0.31415E1」、「3.1415E0」などとなります。
代入
宣言した変数に対して、定数を代入することができます。
int a, b; // 変数名「a, b」をint型で宣言
char ch_1, ch_2; // 変数名「ch_1」と「ch_2」をchar型で宣言
unsigned long lon_g; // 変数名「lon_g」をunsigned long型で宣言
float flo; // 変数名「flo」をfloat型で宣言
ch_1 = 'C';
ch_2 = 0x43; // 16進数で43を代入
lon_g = 'C'; // long型 lon_gに'C'のASCIIコード43Hを代入
flo = 3.1415;
a = b = 10000; // aとbに10000を代入
初期化
変数を宣言しても、その変数の内容(値)は不定です。
変数の宣言と同時にある値で初期化することもできます。
int a = 10000;
char ch = 'C';
int b = a = 10000; // aもbも10000になる
いままで説明したことを、C言語のプログラムを実行し、確かめてみましょう。
*/
/*
#include <stdio.h>
void main() {
int a, b; // 変数名「a, b」をint型で宣言
char ch_1, ch_2; // 変数名「ch_1」と「ch_2」をchar型で宣言
unsigned long lon_g; // 変数名「lon_g」をunsigned long型で宣言
float flo; // 変数名「flo」をfloat型で宣言
ch_1 = 'C';
ch_2 = 0x43; // 16進数で43を代入、10進数で67です。
lon_g = 'C'; // long型 lon_gに'C'のASCIIコード43Hを代入
flo = 3.1415; // float型 flo に 3.1415を代入
a = b = 10000; // aとbに10000を代入
printf( "\n\n");
printf("ch_1 = %d ch_2 = %d lon_g = %d flo = %f a = %d b = %d \n\n", ch_1, ch_2, lon_g,
flo, a, b);
printf("ch_1 = 0x%x ch_2 = %c lon_g = 0x%x flo = %f a = %d b = %d \n\n", ch_1, ch_2, lon_g,
flo, a, b);
// なにをやっているか、わかりますか。
printf( "\n\n");
}
*/
/*
構成
C言語の文法的な構成について、次に説明します。
語句の種類
C言語を構成する語句は「識別子」、「予約語」、「定数」、「文字列」、「演算子」、「区切子」、
「コメント」、「ブランク」があります。
識別子は、関数名、変数名のことです。変数には、単純変数、配列、ポインタの3種類があり、
さらにint型、char型などの型が存在します。
予約語は、プログラムの実行順序の制御や、変数の型など、決まっている語です。
定数はその名の通り、決まった値をもちます。文字列も定数(文字)の集まりで、
定数の1種と考えられます。
演算子は足し算、引き算などの「+」や「-」のことです。
区切子とは、文と文を区切ったりするものです。
コメントとは、プログラムとは関係ないが、プログラマーが自分あるいは、一緒に作っている仲間の
プログラマーに対してのメッセージです。
*/
// コメントの書き方は2種類あります。1つは 「//」の以降改行まで、2つ目は「/*」と「*/」の間です。
/* 後者は入れ子ができません。
ブランクとは、プログラムを見やすくするための改行や、タブ、スペースを言います。
式
上で説明した語句を組み合わせて式を構成します。
式には一次式と演算式(演算子を用いて一次式を組み合わせたもの)に分けることができます。
関数も式になります。何かを処理するための引数(パラメータ)を必要とし、その結果を返します。
その結果を戻り値と言います。
文
式1つもしくは複数の式から文を構成します。文の後には必ず1文の終わりを示す記号「;」がつきます。
1行の中に文が2つ以上あっても構いません。エディターで見た場合に1行の中に複数の文があっても、
コンパイラは各々を文として認識するからです。
*/
/*
文には「式の文」(上で言う「int c_language = 10;」など)、空文(「;」のみからなる文)、
制御文(「break;」、「return;」など)があります。
ブロック
文が0文、1文、あるいは複数の文からブロックが構成されます。
文をブロックを表す「{」と「}」で囲みます。ブロックは「1文と見なす単位」のことです。
条件分岐(「if」、「else」)や反復(「for」や「while」など)などは、基本的に1文しか実行できません。
しかし1文だけしか繰り返せないのでは不便です。そこでこのブロックで1文と見なすことで、
複数の文を反復することができるのです。
また、ブロックは入れ子にできるので、複数のブロックを1つのブロックとすることもできます。
*/