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 && 式2 // and
- 式1 || 式2 // or
- !式 // 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)
三つの整数値読み込んで、値の関係を表示するプログラムを作成せよ。
表示例:
- 三つの値は等しいです。
- 二つの値は等しいです。
- 三つの値は異なります。
参考