■時代遅れの変数宣言と初期化(非推奨)
#include <stdio.h>
//スタブ関数
int get_x(void){return 2;}
int get_y(void){return 3;}
int get_z(void){return 4;}
//体積積を求める
int get_volume(void){
//1.関数の先頭で変数宣言
int x;
int y;
int z;
int volume;
//2.とりあえず0で初期化
x = 0 ;
y = 0 ;
z = 0 ;
volume = 0;
//3.本処理で値設定
x = get_x();
if(x < 0)
return -1;
y = get_y();
if(y < 0)
return -1;
z = get_z();
if(z < 0)
return -1;
volume = x * y * z;
return volume;
}
int main(void){
printf("体積 = %d\n",get_volume());
}
(1)関数の先頭で変数宣言
(2)未初期化防止のためとりあえず0で初期化
(3)本処理で値設定
の3部構成からなる
K&RとかC89とかいう
古い時代のよくあるスタイルです。
■参照直前で変数宣言と初期化(推奨)
#include <stdio.h>
//スタブ関数
int get_x(void){return 2;}
int get_y(void){return 3;}
int get_z(void){return 4;}
//体積積を求める
int get_volume(void){
//変数参照直前で変数宣言と同時に値設定
int x = get_x();
if(x < 0)
return -1;
int y = get_y();
if(y < 0)
return -1;
int z = get_z();
if(z < 0)
return -1;
return x * y * z;
}
int main(void){
printf("体積 = %d\n",get_volume());
}
変数を参照する直前で
有効値を設定しているので
変数スコープも狭く読みやすくなっています。
宣言と同時に値設定するので
未初期化リスクも極めて低いスタイルです。