この章では変数について説明します。
変数とはデータを入れることができる入れ物に似ています。
例えば携帯電話やフロッピーディスクにデータを記憶すると持ち運びが出来ますが、この携帯電話やフロッピーディスクに相当するものが変数です。
変数にデータを入れながら、プログラムを書いていくのが基本です。
では例で詳しく説明します。 「データ型名 変数名;」という構文を「変数の宣言」と言います。
データ型は「データ型について知ろう」で説明します。
この例では以下が変数の宣言です。 変数を使用するためには必ず変数の宣言が必要です。
つまり、「これからこの変数を使用しますよ」と宣言するのが変数の宣言です。
変数には名前を付けなくてはいけないのですが、この例ではaが変数名です。
本に関係しているプログラムであればbookなどと変数名を付けます。
この例では変数名にaと付けましたが、名前を付ければ何でもいいというのではなく、一定のルールがあります。 予約語とはすでにC言語の言語仕様で機能が定義されている単語のことです。
次の表が予約語です。
以後、学習が進んでいくうちに予約語は自然と覚えますので、ここでは覚えなくても結構です。 次に「データ型名」について説明します。 変数の前に「int」が付いていますが、これがデータ型です。
変数を使用するにはまず初めに『この変数は何型の変数です』と宣言しなければいけません。
データ型については「データ型について知ろう」で詳しく説明しますが、簡単に言いますとどのようなデータを変数に入れるのかにより型名は変わります。
この例では整数の2を変数aに入れているので、intを使用しています。 これまで変数の宣言について説明してきましたが、次の例で変数の宣言の注意事項について説明します。 変数の宣言は必ず関数の先頭で行ってください。
つまり、例のように宣言の前に余計なものがありますとエラーになります。
この例は「int a;」の前にが書いてありますので、エラーです。
次は変数へのデータの入れ方について説明します。
変数の宣言が終わりますとデータを入れることが出来ますが、以下の構文でデータを入れます。 変数を宣言してから、データを入れるというのが基本です。
データ型名は変数の宣言の箇所のみ付けてください。
例の「a=2;」の中にと言う記号がありますが、これを代入演算子と言います。
数学の「=」とは関係ありません。
代入演算子は右辺のデータを左辺に入れる役割があります。
例で説明しますとaと言う変数に2と言うデータを入れるという意味です。
この入れる作業を「代入」といいます。
注意してほしいことは以下のように同じ変数に他のデータを代入してしまうと後から代入したデータで上書きされますので注意してください。 つまり、結果は「変数の値は2です変数の値は20です」となりますが、整数のaに代入されていた2がの箇所で20に上書きされます。
変数には1つしかデータを入れることができないことを覚えておいてください。
ここで変数に関しての補足をしておきます。 他の入れ方としては以下の構文のように変数の宣言と同時にデータを入れることもできます。 これを変数の初期化と言います。
入れるデータのことを初期値と言います。
例えば先ほどの例は以下のように書き換えることができます。 どちらの方法でデータを入れても結構です。 次は先ほどの例の以下の箇所を説明します。 printfについては以前、説明しましたが、その時にはのようにprintfの中の引数は文字列でした。
しかし、整数を出力させようと思ってと書いても出力することはできません(エラーになります)。
の3の部分をダブルクォートで囲んでと書けばエラーにならず出力はできますが、数値をダブルクォートで囲むと整数ではなくなって、文字列として出力されることになります。
では、整数型の数値を整数として出力させるにはどうしたらいいか。
それは例にあるようにという変換指定子を使います。
この例の変換指定子はaの値をの箇所に置き換えます。 このように数値などのデータを文字列に変換して表示させたい時に変換指定子を使います。
ここで大事なのはと書いて出力されるのは変数の中に入っているデータであり、aという変数名が出力されるわけではありません。
つまり、この例ではaに入っている2というデータが出力されます。
つまり、結果はになりますが、と出力されるのではありません。
では変換指定子の基本構文について説明します。 〇「テンプレート」はダブルクォートで囲んでください。
そして、このテンプレートの中に文字列と変換指定子を自由に組み合わせて記述します。
テンプレートとは「型」と言う意味なのでという型で出力しますという意味です。
変換指定子はたくさんありますが、はint型の数値である整数を出力するときに使います。
基本構文の「変数」の箇所は変数ではなくても、直接数値などを指定してもいいです。 では他の例をみてみましょう。
これまでの例ではprintfの中の変換指定子は1つでしたが、以下の通り複数の変換指定子を設定できます。 変数と「変換指定子」の対応関係は以下の通りです(スペースの都合でprintfの引数を2行で書いていますが、1行で書いていただいても結構です)。 テンプレートの一番左側の変換指定子と変数側の一番左の変数は対応関係にあります。
テンプレートの真ん中の変換指定子と変数側の真ん中の変数は対応関係にあります。
テンプレートの一番右の変換指定子と変数側の一番右の変数は対応関係にあります。
変数と変換指定子の数は合わせて書いてください。