引数を二重に定義するような書き方は問題ないのでしょうか?

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

引数を二重に定義するような書き方は問題ないのでしょうか?

#1

投稿記事 by ポータル241 » 5年前

C言語を勉強し始めて疑問に思った点を質問させてもらいます。
このようなsubstitutionでadditionの引数を二重に定義するような書き方は大丈夫なのでしょうか?

今回は1つのパターンしかないため、プログラムに意味を成していませんが、仮にsubstitution関数を複数回使い、answer2,answer3...などとパターンがある場合は使い道があるかと思われます。
初歩的な質問ですいません。なんと表現していいのかが分からず調べてもイマイチなものしか出て来ず納得出来なかったため回答を頂けますとありがたいです。

コード:

int answer = 0;

void addition(int answer,int x,int y){
	answer =  x + y;
}

void substitution(int answer,int number_x,int number_y){
	addition(answer,number_x,number_y);
}

void main(){
	substitution(1,1);
	 printf("a + b = %d",answer);
}

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

Re: 引数を二重に定義するような書き方は問題ないのでしょうか?

#2

投稿記事 by box » 5年前

コード:

void substitution(int answer,int number_x,int number_y){
	substitution(1,1);
とりあえずこのコードでは関数定義時の引数の数(3個)と
呼出し時の引数(2個)が食い違っているので
コンパイルエラーが出る、とだけ申しておきましょう。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

初めての書き込みです。

Re: 引数を二重に定義するような書き方は問題ないのでしょうか?

#3

投稿記事 by 初めての書き込みです。 » 5年前

すみません、質問の意味がよくわからないです。。

コード:

void addition(int answer,int x,int y){
	answer =  x + y;
}

void substitution(int answer,int number_x,int number_y){
	addition(answer,number_x,number_y);
}
substitutionの第一引数とadditionの第一引数が同じ名前を使っているけど、この使用方法で問題ないでしょうか?っていうことでしょうか?

シャドウ

Re: 引数を二重に定義するような書き方は問題ないのでしょうか?

#4

投稿記事 by シャドウ » 5年前

2重定義は問題です。
intとdoubleなら問題ないんですがね。
「引数の型や数が異なっていれば、同じ名前を持つ関数を複数定義できる」
異なってないと定義できないからエラーになるのです。

シャドウ

Re: 引数を二重に定義するような書き方は問題ないのでしょうか?

#5

投稿記事 by シャドウ » 5年前

2重定義は問題です。
intとdoubleなら問題ないんですがね。
「引数の型や数が異なっていれば、同じ名前を持つ関数を複数定義できる」
異なってないと定義できないからエラーになるのです。

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 13年前
住所: 北海道札幌市
連絡を取る:

Re: 引数を二重に定義するような書き方は問題ないのでしょうか?

#6

投稿記事 by Dixq (管理人) » 5年前

実現したいことがよくわかりませんが、関数のオーバーロードとは別ですか?
以下のように同じ関数名で引数の異なる定義を沢山作ることはできます。

コード:

#include <stdio.h>

void add(int a) {}

void add(int a, int b) {}

void add(double a) {}

void add(double a, double b) {}

int main() {
    //hoge
}

返信

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