関数におけるif文とreturn文について
◎1--------------------------------------------
#include<stdio.h>
#include<math.h>
double maxdt(double a,double b);
void disp_sqrt(double n);
int main(void)
{
double mx;
mx=maxdt(22.33,44.55);
printf("mx=%f\n",mx);
disp_sqrt(3.0);
disp_sqrt(-6.0);
return 0;
}
double maxdt(double a,double b)
{
if(a>b)
return a;
else
return b;
}
void disp_sqrt(double n)
{
if(n<=0.0) return;
printf("%f の平方根=%f\n",n,sqrt(n));
}
-----------------------------------------------
◎2-------------------------------------------
#include<stdio.h>
#include<math.h>
double maxdt(double a,double b);
void disp_sqrt(double n);
int main(void)
{
double mx;
mx=maxdt(22.33,44.55);
printf("mx=%f\n",mx);
disp_sqrt(3.0);
disp_sqrt(-6.0);
return 0;
}
double maxdt(double a,double b)
{
if(a>b)
return a;
else
return b;
}
void disp_sqrt(double n)
{
if(n<=0.0){
return;
printf("%f の平方根=%f\n",n,sqrt(n));
}
}
-----------------------------------------------
◎3--------------------------------------------
#include<stdio.h>
#include<math.h>
double maxdt(double a,double b);
void disp_sqrt(double n);
int main(void)
{
double mx;
mx=maxdt(22.33,44.55);
printf("mx=%f\n",mx);
disp_sqrt(3.0);
disp_sqrt(-6.0);
return 0;
}
double maxdt(double a,double b)
{
if(a>b)
return a;
else
return b;
}
void disp_sqrt(double n)
{
if(n<=0.0){
return;
}
else{
printf("%f の平方根=%f\n",n,sqrt(n));
}
}
--------------------------------------------------
◎1は参考書を参考に作ったものです。
◎1は正常に動きます。
以上3つのプログラムで、疑問に思ったのは、関数「void disp_sqrt(double n);」についてなのですが、自分はif文が文が1つでもカッコ{ }を付けたい考えなので、◎1の「void disp_sqrt(double n)」の関数のif文に{}を付けようと思い、まず◎2のように変えたところ、平方根の表示が何も出ませんでした。
return文も文の1つだと考え、◎3のような形は正常に動きました。
return文とprintf文の2つの文があるという考えは間違っているのでしょうか?
後、◎1は何故{ }が無くてもよく、◎2は何も表示されないのでしょうか?
教えていただけると嬉しいです。
お礼
なるほど。 そんなことも出来るんですね。 ありがとうございます!