C言語でよく使うコードをまとめておきます
if文
文1
else
文2
printf(“10の倍数ではないです。”);
else
printf(“10の倍数です。”);
式には、( )が必要です
a % 10
1桁目の数値を取得する時にも使えます
if (式2) 文2
下記のような場合、コードが読みやすくなります
if (b < min) min = b;
if (c < min) min = c;
diff = n1 – n2;
else
diff = n2 – n1;
この場合は、式に、( )は不要です
文1
else if(式2)
文2
else
文3
printf(“正”);
else if (a < 0)
printf(“負”);
else
printf(“0”);
else文の中に、入れ子となってif文が入っている状況です
switch文
case 値1 : 式1 break;
case 値2 : 式2 break;
default : 式3; break;
}
case 0 : puts(“偶数”); break;
case 1 : puts(“奇数”); break;
default : puts(“不正な値です”); break;
}
値 と 式 の間に、: が必要です
case と 式の間、式 と : の間に、半角スペースが必要です
各caseの文の後に、break; が必要です
caseがヒットしたところ ~ break; までの箇所が実行されます
どのcaseにもヒットしない場合、default : ~ break; までの箇所が実行されます
for文
printf(“%d\n”, i);
}
文
各仮引数の間は、;
で区切る
(式1; 式; 式3)
の後ろに、;
を付けないように注意下記のように記述すると 文 が実行されなくなります
文
この場合の
;
は何も実行しない文(空文 くうぶん)となります
文の直後で、式3が実行されます
i | i (文の直後) |
---|---|
0 | 1 |
1 | 2 |
2 | 3 |
do文 / while文
do文
文
} while (式);
文の後に、while を記述します
文
};
while文
while (式){
文
};
+=など
演算子の後に、= を記述します
sum に no を加える という処理をした後に、sum に代入するという処理をしています
break / continue
break
ループ文の中に記述すると、記述した箇所で、ループを抜けます
if i == 3 break;
printf(“%d\n”, i);
1
2
3
continue
ループ文の中に記述すると、記述した箇所で、ループの最初にジャンプします
if i == 3 continue;
printf(“%d\n”, i);
1
2
4
5
ループ文:for文、do文、while文の総称
配列
for (int i = 0; i < 5; i++)
a[i] = i;
for (int i = 0; i < 5; i++)
printf(“%d\n”, i);
a[0]
a[1]
a[2]
a[3]
a[4]
[ ] の数値は、要素数です。a[5] という要素はありません。
配列の初期化は、{ } を使用します
初期化の方法 | 各要素の値 | 備考 |
---|---|---|
int a[5] = {1,2,3,4,5}; | {1,2,3,4,5} | 基本形 |
int a[] = {1,2,3,4,5}; | {1,2,3,4,5} | 要素数を省略できる |
int a[5] = {1,3}; | {1,3,0,0,0} | 初期化しない要素の値は、0 |
int a[5] = {0}; | {0,0,0,0,0} | 全て0で初期化 |
int a[] = {[2] = 5, 9, [6] = 3, 1} | {0,0,5,9,0,0,3,1} | 要素を指定することができる |
マクロ
main関数の前に記述する
#define を記述する
; は不要
extern
int point[5];
void print_pass(void);
int main(void){
extern int point[5];
}
void print_pass(void){
extern int point[5];
}
extern:ブロック外で宣言されている変数を使用します
関数の宣言
int min = a[0];
for (int i = 1; i < n; i++)
if (a[i] < min) min = a[i];
return min;
}
関数を宣言する時、極力、配列の仮引数に const を付けます
これにより、関数内で配列の書き換えが不可となります
そして、この関数を安心して呼び出すことができます
for (int i = 0; i < n; i++)
for (int j = 0; j < 3; j++)
c[i][j] = a[i][j] + b[i][j];
return 0;
}
最も高い次元未満の要素数は、必ず定数となります
static
int a;
int main(void){
static int b;
int c;
printf(“%d/n”, a); // 0
printf(“%d/n”, b”); // 0
printf(“%d/n”, c”); // 9999
}
static を付けて宣言した変数は、プログラム開始時に0に初期化される(main関数の外で宣言した変数も同様)
これらは静的記憶域期間といい、プログラム終了時に破棄されます
register
register を付けて変数を宣言すると、演算が高速になることが期待できます
この変数を、主記憶よりも(高速な)レジスタに格納したほうがよいと、コンパイラにヒントを与えます
enum
enum gender {Male, Female}; enum gender select_gender(void){ int tmp; do { printf("0…男 1…女:"); scanf("%d, &tmp"); } while (tmp < Male || tmp > Female); return tmp; } void print_gender(enum gender gender){ switch (gender){ case Male: printf("男"); break; case Female: prinf("女"); break; } } enum gender your_gender; your_gender = select_gender(); print_gender(your_gender); return 0;
限られた選択肢の中から変数に代入させるときなどに使用します
Male ・・・ 0
Female ・・ 1
というように、0 から順番に数字が割り当てられます
enum 列挙体タグ{列挙定数, 列挙定数}
このようにして列挙体を宣言します
enum gender
という型を宣言しています
また、下記のように割り当てる数字を指定することもできます
enum month {January = 1, Feburary, March, April, May, June, July, August, September, October, November, December}
January ・・・ 1
February ・・・2
・
December ・・ 12
コメント