自作関数について・・・

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
初見さん

自作関数について・・・

#1

投稿記事 by 初見さん » 6年前

#include<stdio.h>
int max2(int a,int b)
{
int max;
if(a>b){
max=a;
}else{
max=b;
}
return max;
}

int main(void)
{
int n1,n2;
n1=30;
n2=34;
printf("%d",max2(n1,n2));
return 0;
}

テキストをもとにこのプログラムを書いたんですけど、n1とaを対応させて、
n2とbをそれぞれ対応させているようなのですが、有効範囲的にn1の部分をa、n2をbにして、
aをa、bをbのように対応させてもプログラムに支障はないですよね?

box
記事: 2002
登録日時: 13年前

Re: 自作関数について・・・

#2

投稿記事 by box » 6年前

こんな風にしたい、ってことですか?

コード:

#include <stdio.h>

int max2(int a, int b)
{
    int max;

    if (a > b) {
        max = a;
    } else {
        max = b;
    }
    return max;
}

int main(void)
{
    int a, b;

    a = 30;
    b = 34;
    printf("%d", max2(a, b));
    return 0;
}
だったら、全然問題ありません。
ちなみに、「有効範囲的に」という意味では、上記コードで、main関数におけるa, bとmax2関数におけるa, bとは
全く別物です。
main関数からmax2関数に渡した変数a, bを、「たまたま」max2関数でも同じ変数名a, bで扱っているだけです。
こんがらがることを承知の上で出しておくと、こんなことだって出来ます。

コード:

#include <stdio.h>

int max2(int b, int a)
{
    int max;

    if (b > a) {
        max = b;
    } else {
        max = a;
    }
    return max;
}

int main(void)
{
    int a, b;

    a = 30;
    b = 34;
    printf("%d", max2(a, b));
    return 0;
}
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

初見さん

Re: 自作関数について・・・

#3

投稿記事 by 初見さん » 6年前

例を交えた解説、非常にわかりやすかったです。

返信

“C言語何でも質問掲示板” へ戻る