海外旅行から帰ってきたら、まず何を食べる?

#include <stdio.h>
int kansuu(int hikisuu1, int hikisuu2);
int main()
{
int modori;
modori = kansuu(2, 3);
printf("modori = %d\n", modori);
return 0;
}
int kansuu(int hikisuu1, int hikisuu2)
{
printf("kansuu de hyouji\n");
return hikisuu1 * hikisuu2;
}
 以上のコンパイルの結果は
 kansuu de hyouji
modori = 6
  ですが!
 これを
 modori = 6
kansuu de hyouji
 にすることは可能でしょうか!?
 よろしくお願いします。

A 回答 (3件)

kansuu de hyouji


modori = 6
上記のメッセージはプログラムで画面上の表示する(printf)という関数を実行することで表示されています。
2つあるprintfが呼ばれた順に実行されています。

#include <stdio.h>
int kansuu(int hikisuu1, int hikisuu2);
int main()
{
int modori;

//kansuu関数を実行し、結果を受け取ります。
//kansuu関数内でprintfを実行しているのでこの時点で"kansuu de hyouji\n"が表示されます。
modori = kansuu(2, 3);
//"modori = ??\n"の結果を表示します。
printf("modori = %d\n", modori);
//終了します。
return 0;
}
int kansuu(int hikisuu1, int hikisuu2)
{
//"kansuu de hyouji\n"を表示します。
printf("kansuu de hyouji\n");
//引数で受け取ったhikisuu1×hikisuu2の結果を返します。
return hikisuu1 * hikisuu2;
}

一つ一つ解説するとこうなります。
kansuu内でprintf("kansuu de hyouji\n");を実行していますが、
kansuu関数は掛け算をしているだけなのでprintfをしなくても良さそうですね。

なので下記のように。

#include <stdio.h>
int kansuu(int hikisuu1, int hikisuu2);
int main()
{
int modori;

modori = kansuu(2, 3);
printf("modori = %d\n", modori);
printf("kansuu de hyouji\n");
return 0;
}
int kansuu(int hikisuu1, int hikisuu2)
{
return hikisuu1 * hikisuu2;
}
    • good
    • 0
この回答へのお礼

貴重なご回答まことにありがとうございました。
 
  なぜそうなるのか現在解析中です。

  掲示板のご回答など
  現在の私のレベルだと説明されてもまだそれを理解するスキルがないです。
 なので、
 参考書を読んでも、奥が深いので、分からないのが多いです。 
 
  現在、私が有力視しているプログラムのスキルアップは!
 1)掲示板に質問して少しでも何かを得ること
 2)プログラムをいじることにより、コンパイルの結果がどうなるかを、見極めながら、プログラムの構文
   の役割を知る
   以上2件です。

#include <stdio.h>
int A(int B, int C);
int main()
{
int D;
D = A(1.0,2.0);
printf("(1)= %d\n", D);
return 0;
}
int A(int E, int F)
{

return 2 * 3;
}

 結果は
(1)= 6
 
 以上に変更しました。

 printf("kansuu de hyouji\n");
は 削除しまして!
 解析中するうえで、シンプル化したほうがわかりやすいので省きました。 

 頑張りますので今後ともよろしくお願いいたします。

お礼日時:2014/10/31 05:05

>それを知るために質問しました。



とりあえずいっておくと
コンパイラがソースを読む順番と
実際に実行する順番は何の関連もありません。

実行される順番は#2の方が説明されてますので、よく読んで理解しましょう。
    • good
    • 0
この回答へのお礼

Extra nosy^^.

お礼日時:2014/10/30 02:45

>kansuu de hyouji


>modori = 6

なぜ、この順番で出力されるのかは理解されていますか?

この回答への補足

それを知るために質問しました。

補足日時:2014/10/29 19:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!