0

私は C プログラミングを独学で学んでいますが、関数間で変数を使用するのが難しいところまで来ました。

このプログラムをコンパイルして実行すると、関数 askBirthYear は正しい値を返しますが、sayAgeInYears は 0 またはガベージ値を返します。変数birthYearの使用方法に関係があると思いますが、問題を解決する方法に困惑しています。

コードは次のとおりです。

#include <stdio.h>
#include <stdlib.h>

int askBirthYear(int);
void sayAgeInYears(int);
int birthYear;

int main(void)
{    askBirthYear(birthYear);
     sayAgeInYears(birthYear);
     return EXIT_SUCCESS;
}

int askBirthYear(int birthYear)
{
    printf("Hello! In what year were you born?\n");
    scanf("%d", &birthYear);
    printf("Your birth year is %d.\n", birthYear);
    return birthYear;
}

void sayAgeInYears(int birthYear)
{
    int age;
    age = 2012 - birthYear;
    printf("You are %d years old.\n", age);
}
4

1 に答える 1

1

単純。参照ではなく値によって、birthYear を askBirthYear に渡します。そして、その戻り値を床に落とすだけです。また、askBirthYear の宣言とその定義に不一致があります。

#include <stdio.h>
#include <stdlib.h>

int askBirthYear(void);
void sayAgeInYears(int);
int birthYear;

int main(void)
{
     birthYear = askBirthYear();
     sayAgeInYears(birthYear);
     return EXIT_SUCCESS;
}

int askBirthYear(void)
{
    int year;
    printf("Hello! In what year were you born?\n");
    scanf("%d", &year);
    printf("Your birth year is %d.\n", year);
    return year;
}

void sayAgeInYears(int birthYear)
{
    int age;
    age = 2012 - birthYear;
    printf("You are %d years old.\n", age);
}
于 2012-09-21T21:35:11.317 に答える