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