🌞なぜvoid newmadefunction(void){printf("今日もよいC言語日和です。¥n"); return ; } と自作関数が記述されるのでしょうか?returnに注目☆

ソーラー「今度は自作関数の定義


void newmadefunction(void){


printf("今日もよいC言語日和です。\n");


return;

}


において

なぜ

return;

になっているのかについて考察してみるよ。


この自作関数 newmadefunction()の定義では


return;


と記述されています


なぜreturn 0;


でないのでしょうか?


そもそも


なぜ自作関数の定義に


return;

がついてくるのでしょうか?


そもそもreturn 0;


とはなんのためにあるのでしょうか?


void newmadefunction(void){


printf("今日もよいC言語日和です。\n");


return;

}


でなく



void newmadefunction(void){


printf("今日もよいC言語日和です。\n");


}


で十分な


気がします。」



アレサ「そうですね。ソーラーさん


さあ なぜ


return;


が自作関数の定義に記述されているのか


その答えは・・・」


ソーラー「みんな 知りたいか~い?」


アレサ「みなさん おまちかねですの」


ソーラー「注目 僕にあつまってるのかな?」


アレサ「はいっ😊 もちろんあつまっていますの」



ソーラー「その答えは


関数の仕組みにあるのです。


さきのエピソードでもみてきたように


関数は戻り値をもつよう設定されています


printf関数もscanf関数も戻り値をもっています、


自作関数を自分で作成する場合


戻り値をどのような値にするかは自分で設定することができます。


今の自作関数の定義は


void newmadefunction(void){


printf("今日もよいC言語日和です。\n");


return;

}

となっています。


この場合


自作関数newmadefunction()


の戻り値はどのような値になっているのでしょうか


🌞🌞🌞🌞🌞🌞🌞🌞

自作関数newmadefunction()を実行するときは


newmadefunction(void);

でなく

newmadefunction();


と記述してください


newmadefunction(void);

と記述すると

コンパイルエラーとなります。

            

                     solarplexussより

🌞🌞🌞🌞🌞🌞🌞🌞


実は


自作関数newmadefunction()の戻り値は


returnによって自由に設定することができます


もしreturn 0;なら


newmadefunction()は0という戻り値をもちます。


もしreturn 1;なら


newmadefunction()は1という戻り値をもちます。



そして自作関数の定義では

これらの戻り値である0や1を格納する型を

自作関数の前に表記するというしくみとなっています


この0や1は整数値なので整数値を格納する型 intが

自作関数の前に表記されます。


実際に


自作関数の戻り値を1に設定したいならば


return 1;と表記し


戻り値1を格納する型intを


newmadefunction(void)の前につけます。



ですので


自作関数の定義は


int newmadefunction(void){


printf("今日もよいC言語日和です。\n");


return 1;

}


となります。


もちろん 戻り値が1となっただけですので


自作関数

void newmadefunction(void){

printf("今日もよいC言語日和です。\n");

return ;

}


を

int newmadefunction(void){

printf("今日もよいC言語日和です。\n");

return 1;

}

と


自作関数newmadefunction()の戻り値を1にした


1と2のプログラムでは



1.

#include <stdio.h>


void newmadefunction(void){

printf("今日もよいC言語日和です。\n");

return ;

}


int main (void){

newmadefunction();

return 0;

}


コンパイル結果


EAZY IDECの場合

今日もよいC言語日和です。


Visual Studioの場合

今日もよいC言語日和です。



2.

#include <stdio.h>


int newmadefunction(void){


printf("今日もよいC言語日和です。\n");


return 1;

}


int main (void){

newmadefunction();

return 0;

}


コンパイル結果


EAZY IDECの場合

今日もよいC言語日和です。


Visual Studioの場合

今日もよいC言語日和です。



どちらも


同じコンパイル結果


今日もよいC言語日和です。


となります。



🐤 🐤 🐤 🐤 🐤 🐤 🐤 🐤 🐤 🐤


さあ、おまちかね


void newmadefunction(void){

printf("今日もよいC言語日和です。\n");

return;

}


と自作関数newmadefunctionの定義が行われた場合は


newmadefunction()はどのような戻り値をもつのでしょうか?


自作関数の定義において


return;


と設定された場合は戻り値を自作関数はもたないことになっています。


ですので


自作関数newmadefunction()は戻り値をもちません。


戻り値を持っていないので


void newmadefunction(void)


と


自作関数newmadefunction(void)のまえにvoidがつけられています。


voidは数値を格納しない型を表していて


戻り値を格納しません。


ですので


void newmadefunction(void){

printf("今日もよいC言語日和です。\n");

return;

}

を


int newmadefunction(void){

printf("今日もよいC言語日和です。\n");

return;

}

のように


voidでなくintを記述して


プログラムを実行すると


int型には戻り値が格納されないままとなるので


#include <stdio.h>


int newmadefunction(void) {


printf("今日もよいC言語日和です。\n");


return;

}


int main(void) {

newmadefunction();

return 0;

}




EAZY IDECの場合

コンパイル結果

今日もよいC言語日和です。



Visual Studioの場合

エラー C2561 'newmadefunction': 関数が値を戻すように宣言されていますが、関数定義に 'return' ステートメントがありません。


と表示されます


Visual Studioの場合では


不完全なプログラムが実行されないよう改良が加えられているのです。



どうかな? みんな わかったかな」












  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます