3.1.1 複合文

C の推奨されるスタイル

C言語やJava言語は、中括弧 { } を使ってブロックを記述します。 中括弧だけでなく、ブロックの範囲を字下げ(インデント)して記述します。 ただ、中括弧をどの位置に記述するかによって、コーディング・スタイルの宗教論争が起きています。 主に中括弧の位置の違いなのですが、なぜか字下げスタイルと呼ばれています。

// 中括弧の開始を、文末に記述するスタイルを「K&R スタイル」といいます。
void FuncA()
{
  if ( ... ) {
  }
}

// 中括弧の開始を、文のない行に記述するスタイルを「BSD スタイル」といいます。
void FuncA()
{
  if ( ... )
  {
  }
}


// 関数の開始も、文末に記述するスタイルを「Java スタイル」といいます。
void FuncA() {
  if ( ... ) {
  }
}

 

複合文(ブロック)

文の並びを{ }で囲んだものを「複合文」といいます。ブロックとも言います。

複合文は複数の「宣言」と「」を扱うことができます。

関数の定義に使うブロック { } は「複合文」です。

main関数の定義に使われているブロック { }は「複合文」です。

実例: 二つの整数値を読み込んで、値の関係を表示するプログラムを作成

#include <stdio.h>

int main(void)
{
    int no1, no2, max, min;

    printf("二つの整数を入力してください。\n");
    printf("整数1:");    scanf("%d", &no1);
    printf("整数2:");    scanf("%d", &no2);

    if(no1 > no2){
        max = no1;
        min = no2;
        printf("大きい方の値は%dです。\n", max);
        printf("小さい方の値は%dです。\n", min);
    } else if(no2 > no1){
        max = no2;
        min = no1;
        printf("大きい方の値は%dです。\n", max);
        printf("小さい方の値は%dです。\n", min);
    } else 
        printf("その値は同じです。\n");


    return 0;
}

条件演算子(三項演算子)

/* 今日は、三項演算子(?:演算子)について学びます。条件が真なら処理1を、偽なら処理2を行います。

    条件? 処理1:処理2;

これは、

    if ( 条件 )
        処理1;
    else
        処理2;

と同じです。
しかし、三項演算子を使えばコンパクトなコードを書くことができます。

printf("%s", (x % 2)? "奇数" : "偶数");

 

論理演算子

/* 論理演算子には次の3種類があります。

  1. 式1 && 式2  // and
  2. 式1 || 式2           // or
  3. !式                          // not
#include <stdio.h>

void  main(void);

void main(void)
{
        char c = 'c';

        printf("c = '%c'\n", c);

        if (c >= 'a' && c <= 'z')        /* c が英小文字なら真 */
            printf("c は小文字です。\n");
        else
            printf("c は小文字ではありません。\n");

        if (c >= '0' && c <= '9')        /* c が数字なら真 */
            printf("c は数字です。\n");
        else
            printf("c は数字ではありません。\n");

        if (c == '+' || c == '-')        /* c が '+' か '-' なら真 */
            printf("c は符号です。\n");
        else
            printf("c は符号ではありません。\n");
}

 

演習

演習3-10 (教科書P62)

三つの整数値読み込んで、値の関係を表示するプログラムを作成せよ。

表示例:

  • 三つの値は等しいです。
  • 二つの値は等しいです。
  • 三つの値は異なります。

参考