スポンサーリンク

【C言語】#5 命令実行の文

ぷーたろー
ぷーたろー

本ブログでは、C言語の文を「変数宣言の文」「計算の文」「命令実行の文」という3種類に分けて紹介しましたが、厳密な文の分類や仕組みはかなり複雑で、コンパイラの実装に依存した部分も多く含んでおります。

スポンサーリンク

命令実行の文とは

命令実行の文とは、C言語が準備している様々な命令を呼び出すための文です。この文を使うことで、高度な処理をコンピュータに指示できます。代表的な例として、「printf」があります。

命令実行の文

呼び出す命令の名前(引数) ;

#include <stdio.h>

int main(void)
{
    int age = 20;
    printf("私は%d歳です¥n", age);
    return 0;
}

このように、命令実行の文は末尾に括弧()で囲まれた部分が登場します。括弧の中に記述するのは、引数(ひきすう)パラメータと呼ばれ、その命令を呼び出す際に必要となる追加情報です。
また、C言語で利用できる命令には、printf()以外にも多く存在しており、引数を2つ指定するものや、引数を全く指定しないものなど、命令によって種類が異なります。

画面に表示する命令 printf()

printf()命令は、画面に情報を表示させたい時に用いる代表的な命令です。この命令は、指定した変数(整数・小数・文字列など)を画面に表示しますが、書式文字列によって、その内容に様々な修飾を施すことができます。

printf(書式文字列, 表示したい変数)

型とは、変数に収めることができるデータの種類を言います。例えば、変数宣言の文で示した「int」は整数を表す型です。この型で宣言された変数ageには整数しか入れることができません。小数や文字の値は格納できないのです。

変数の名前

変数を宣言する際には、変数に名前をつける必要があります。C言語プログラムでは変数以外のものにも名前を付けることがありますが、それらの名前として使える文字や数字の並びのことを識別子 (identifer)と言います。通常は、アルファベットや数字、_(アンダースコア)などを組み合わせて作ります。

識別子のルール

識別子には、命名ルールや慣習があります。

1. 予約後は使用できない

C言語には、変数名として使用してはいけない単語が35個程あります。これらを予約語(keyword)と言います。例えば、intやvoid、returnなどは予約語ですので、変数名として利用することはできません。

2. 先頭に_を1つ付けた名前は使用しない

先頭に_(アンダースコア)記号を1つ付けた名前は、C言語自体のために予約されています。よって予約語同様、使用を避ける必要があります。

3. 既に利用している変数名は使えない

既に変数を宣言しているプログラムでは、再び同じ変数を宣言することはできません。2つの変数を区別できなくなってしまうためです。

4. 大文字/小文字、全角/半角は区別される

C言語では、大文字/小文字、全角/半角の違いは完全に区別されます。例として、変数nameと変数Nameは別のものとして扱われます。

5. 小文字で始まる分かりやすい名前が望ましい

変数には、小文字で始まる名詞形の名前を付ける慣習があります。aやsのような1文字の変数名、dataやflagなどの抽象的で内容が分かりにくい変数名は避け、誰もが想像しやすい具体的な変数名が望ましいでしょう。

代表的な型(8種類)

プログラムで扱うことのできるデータの種類を、データ型(data type)または単に型といいます。C言語には多くの種類の方が用意されています。まずは、基本となる8つの型を紹介します。

整数を格納する4つの型(char・short・int・long)

char型、short型、int型、long型の変数には、整数を代入できます。
これら4つの型には、コンピュータ内部に確保されるメモリの量に違いがあります。

注意ポイント

C言語では、整数型のサイズについて明確には決められていません。実際には、利用するコンパイラやCPUによってサイズが変化する可能性があります。例として、int型が2バイトや8バイトの環境も実在します。
当時は、メモリが貴重かつCPUの処理能力が低かったため2バイト以下の変数を使い分ける必要がありました。現在のPCは、性能が良いため、整数を使いたい場合は、int型を採用しておけば問題ないでしょう。

整数型格納可能な整数範囲消費メモリ
char型±約1281バイト
short型±約3.2万2バイト
int型±約21億4バイト
long型±約21億
±約900京
4バイト
8バイト
一覧表
サイズの調べ方
printf("%dバイト¥n", (int)(sizeof(long)));

赤マーカーの箇所に、調べたい型名を入れると、自分の環境における厳密なサイズを調べることができます。

小数を格納する2つの型(float・double)

float型とdouble型の変数には、小数部分を含む数値を代入できます。
この2つの型は、少数を浮動小数点という形式で管理していることから、浮動小数点(floating point type)と総称されることもあります。

メモリ消費量精度の違い
double height; height = 175.5;
float weight; weight = 65.5F;

double型の方がfloat型より多くのメモリを消費しますが、より精度の高い計算を行えます。そのため、特別な事情がない限り、通常はdouble型を利用します。

重要なポイント

浮動小数点方式は、「真に厳密な計算ができない」という弱点があります。計算した際に、わずかな誤差が生じることがあります。通常は無視できるほどの小さな誤差であっても、それが積み重なると大きな問題となることもあるため注意が必要です。
誤差が許されない計算では、float型とdouble型を用いてはいけません。

真偽値を格納する型(bool)

bool型は、YesかNoか、本当か嘘か、成功か失敗といった二者択一の情報を格納するための型です。肯定的な情報を意味するtrue否定的な情報を意味するfalseのどちらかの値のみを代入できます。

bool isError; isError = true;   ▶︎エラーである
bool result; result = false;    ▶︎結果は失敗
使用する際のポイント

trueは真、falseは偽という意味であるから、bool型のことを真偽値型といいます。なお、この型を使用するためにはソースコードの先頭に、「#include<stdbool.h>」という宣言を追加する必要があります。

文字を格納する型(char)

コンピュータの内部では、全ての文字に文字コードという数値が割り振られています。例えば、半角のAには65、_には95、{には123が割り振られています。C言語が誕生時、半角1文字分の文字コード情報を変数に格納するために、char型がよく用いられていました。そのため、char型は「整数型」であると同時に文字を入れるための型「文字型」としても利用されています。

char langName;
langName = 'C';   処理としては、langName=67;と同じこと。 ※Cは(文字コード67)
使用する際のポイント

しかし、次のようなコードを書くと、コンパイルエラーが発生します。

char element;
element = '火';

容量が1バイト、つまり256種類の文字しか格納できないchar型では、何千種類もの文字がある日本語文字(ひらがな・カタカナ・漢字などの全角文)を扱えません。全角文字を格納できる文字型には、「wchar_t型」あります。なお、C言語プログラムにおいて1文字という場合は、通常、半角文字(1バイトのASCII文字)を指します。

タイトルとURLをコピーしました