電子書籍の厳選無料作品が豊富!

下のプログラムは参考書にあったサンプルプログラムなのですが

/* 関数の宣言 */
int print_struct(struct person dat);

のところはなぜint型なのですか?

#include <stdio.h>
#include <string.h>
/* 構造体の定義 */
struct person
{
char name[20]; /* 名前 */
double height; /* 身長 */
double weight; /* 体重 */
int bpl; /* 最低血圧 */
int bph; /* 最高血圧 */
};
/* 関数の宣言 */
int print_struct(struct person dat);

/* main関数 */
int main(void)
{
/* 変数の宣言 */
struct person dat;

/* 構造体のメンバーに値を代入 */
strcpy(dat.name,"山田太郎");
dat.height = 173.5;
dat.weight = 63.0;
dat.bpl = 98;
dat.bph = 113;

/* struct person関数を実行 */
print_struct(dat);
return 0;
}
/* print_struct関数 */
int print_struct(struct person dat)
{
/* 画面に出力 */
printf("%s\n",dat.name);
printf("%f\n",dat.height);
printf("%f\n",dat.weight);
printf("%d\n",dat.bpl);
printf("%d\n",dat.bph);
return 0;
}

A 回答 (3件)

先の二人の回答はあってますが


どうやらかなり初心者でいらっしゃる様子
えーと簡単に言うと、
/* print_struct関数 */
int print_struct(struct person dat)

のintはプログラマーが返り値と呼ぶものです。
intと書いた場合その関数はint型の・・今回は
return 0;
と書いてあります。その数値を返さなくてはいけないのです。
このreturn 0;はreturn 1;でもreturn 2;でもかまいません。
0も1も2もint型だからです。
仮に

float print_struct(struct person dat)
float型にしたらfloat型を返さなくてはいけません。
return 0.0;
ってな感じかな。
    • good
    • 0
この回答へのお礼

int print_struct(struct person dat)
の中の『int』と
return 0;
の『0』にはそう言う関連があるんですね

お礼日時:2006/09/02 09:28

「なぜint型なのですか?」といわれたら,プログラマがそれを選んだからとしか言いようがないですが.



Cではintは,CPUに取って最も自然で処理効率がもっともよいデータ型です.特に他の方を選ぶ理由がなければ,intにします.
    • good
    • 0

まあvoidでもいいですけど、何となくでしょう。


意味はありません。 将来print_struct 関数内でエラーがあったときに -1 でも返すようにするときの拡張でも考えているのではないでしょうか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!