- ベストアンサー
プログラムの通常の流れは上~下でコンパイルされる?
- #プログラムの通常の流れは上~下でコンパイルされる?
- プログラムの通常の流れは上から下へと順番に実行されるのが一般的ですが、コンパイラによっては最適化や最適順序のルールが存在することもあります。
- プログラムの中には、関数の定義と呼び出しの間に定義がある場合、その定義部分は呼び出し部分よりも前にもってくることがあります。これにより、関数が正しく動作するようになります。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
> 以下の使い方がいまいちわかりません? > printf("kansuu de hyouji\n"); > modori = hikisuu1 * hikisuu2; > printf("modori = %d\n", modori); 使い方というか、元のコードは関数の作成例だと思いますが、関数を利用しないで使ってる変数は利用するとして同じような流れだと以下のような感じでしょうか。 int main() { int modori; int hikisuu1; int hikisuu2; hikisuu1=2; hikisuu2=3; printf("kansuu de hyouji\n"); modori = hikisuu1 * hikisuu2; printf("modori = %d\n", modori); return 0; }
その他の回答 (6)
- wormhole
- ベストアンサー率28% (1626/5665)
- Tacosan
- ベストアンサー率23% (3656/15482)
「コンパイル」と「実行」は区別してください.
- kkkkkm
- ベストアンサー率66% (1719/2589)
> この場合なぜ! > kansuu de hyouji > が最初になるのでしょうか!? modori = kansuu(2, 3); でkansuuを呼び出していますからその中にある printf("kansuu de hyouji\n"); が実行されて knnsuuから抜けた後に printf("modori = %d\n", modori); が実行されますから kansuu de hyouji modori = 6 の順に表示されます。 kansuu(2, 3)のところにint kansuu(int hikisuu1, int hikisuu2)が展開されると考えてください。 printf("kansuu de hyouji\n"); modori = hikisuu1 * hikisuu2; printf("modori = %d\n", modori); と書かれているのと同じことになります。 ステップ実行してみるとどの順番で実行されていくか目視できますよ。
補足
ご回答ありがとうございます。 以下の使い方がいまいちわかりません? printf("kansuu de hyouji\n"); modori = hikisuu1 * hikisuu2; printf("modori = %d\n", modori); よろしくお願いします。
- kmee
- ベストアンサー率55% (1857/3366)
では、素人考えなど止めて、正しいプログラミングを勉強しましょう。 分岐、ループ、呼び出し、ジャンプ等、実行順序が「上から順番」でないものが沢山あります。 それと、「コンパイル」は実行できるようにするための準備です。 コンパイルの順序と実行の順序は関係ありません。
それは、このような順番で書かれているからとしか言いようがありません modori = kansuu(2, 3); printf("modori = %d\n", modori); コンパイルの順番とプログラムの実行順は関係ありません。 この質問とは関係ないことですが、Cコンパイラは原則、ワンパスコンパイラですから上から下へ一回のみコンパイルされます。
- maiko0318
- ベストアンサー率21% (1483/6969)
プログラムの基本がわかってないですね。 例えば、スケジュールで 9:00から5階で会議。 10:00から3階で仕事。 11:00から7階で撮影。 とかあったら 「ビルは5階と7階の間に3階はない」といいますか?
お礼
毎度ご回答まことにありがとうございます。 同じ結果が得られました。 すばらしい。 kansuu de hyouji modori = 6 とても分かりやすいです。 最初のきむずい!プログラムと比較した場合、同じ結果ですが! あえて!きむずいプログラムを使用した目的は! 複雑化していくプログラムの流れの中で、必要だからなのでしょう。 ご紹介していただいた、プログラムと比較しながら勉強したいと思います。 その他のスレッドのご回答いろいろありがとうございます。 今後とももよろしくお願いたいします。