コンパイルの結果を入れ替える方法は?
- コンパイルの結果を上下入れ替える方法について教えてください。元のコードはmodori = 6 kansuu de hyoujiとなっています。
- コンパイルの結果を入れ替えてmodori = 6 kansuu de hyoujiにする方法を教えてください。
- コンパイルの結果を入れ替えることは可能でしょうか?具体的な方法を教えてください。
- ベストアンサー
コンパイルの回答行の上下を入れ替えるには!
#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 にすることは可能でしょうか!? よろしくお願いします。
- Campus2
- お礼率47% (226/475)
- C・C++・C#
- 回答数3
- ありがとう数8
- みんなの回答 (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; }
関連するQ&A
- プログラムの通常の流れは上~下でコンパイルされる?
#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 素人の目からして! printf("modori = %d\n", modori);が 最初にあるので 以下がコンパイル結果になりそうですが!? modori = 6 kansuu de hyouji この場合なぜ! kansuu de hyouji が最初になるのでしょうか!? よろしくお願いします。
- ベストアンサー
- C・C++・C#
- modori = 17になる理由を教えてください。
#include <stdio.h> 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"); } コンパイラーソフトは http://codepad.org/KZDkVV1K のネットで実施していまして! これしかないです。 結果は kansuu de hyouji modori = 17 となりました。 皆様はコンパイラーソフトはOSにインストールしてお使いだと思います。 その場合も結果は同じでしょうか!? もし同じでしたら、 modori = 17になる理由を教えてください。 以上よろしくお願いします。
- ベストアンサー
- C・C++・C#
- 参考書にありますが削除しても結果は同じでした。
#include <stdio.h> int kansuu(int hikisuu); int main() { int modori; modori = kansuu(2); printf("modori = %d\n", modori); return 0; } int kansuu(int hikisuu) { printf("kansuu de hyouji\n"); return hikisuu * 2; } 以上のプログラムは参考書の内容ですが、コンパイルした結果が、 kansuu de hyouji modori = 4 です。 二行目の int kansuu(int hikisuu);がなくても、結果は同じでした。 参考書の説明では 「ここでは、関数kansuuの定義とプロトタイプ宣言に 、引数を追加しました。 引数の名前はhikisuuとして、int型の値を記憶できるようにしました。 int kansuu(int hikisuu); ←関数に引数を追加」 以上、 なぜ!参考書はint kansuu(int hikisuu);があるのかがわかりません!? よろしくお願いします。
- ベストアンサー
- C・C++・C#
- 正確なあ値でしょうか!?
http://codepad.org/cBK5A67i を使って以下をコンパイルしたところ! No.1 #include <stdio.h> void kansuu(); int main() { kansuu(); return 0; } void kansuu() { printf("kansuu de hyouji\n"); No.2 } #include <stdio.h> void kansuu(); int main() { kansuu(); } void kansuu() { printf("kansuu de hyouji\n"); return 0; } 以上の コンパイルの結果はNo.1、No.2とも kansuu de hyouji となりました。 No.2の結果は 正確な値でしょうか それともバグでしょうか? よろしくお願いします。
- ベストアンサー
- C・C++・C#
- 仕組みがいまいちですが!
#include <stdio.h> int kansuu(int hikisuu1, int hikisuu0); 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 となり成り立ちますが! int kansuu(int hikisuu0, int hikisuu1); としても成り立ちます。 int kansuu(int hikisuu1, int hikisuu1); にすると以下のエラーが出ます。 Line 2: error: redefinition of parameter 'hikisuu1' Line 2: error: previous definition of 'hikisuu1' was here なぜerrorとなるのでしょうか よろしくお願いします。
- ベストアンサー
- C・C++・C#
- 分割コンパイルについて
現在分割コンパイルが分からずに苦戦しています。 下記のリストは構造体を使わなければコンパイラを通すことができましたが、 使うとなぜか通りません。 あれこれ試しましたがどうしても分かりません。 何がおかしいのでしょうか? *define.hで全てのファイルへの定義や宣言を行わせています。 ////////////// //Main.cpp ////////////// #include <stdio.h> #include <conio.h> #include "define.h" int main( void ){ Tmp[0].c = 15; printf("a: %d\n", a); printf("b: %d\n", b); printf("c: %d\n", Tmp[0].c); printf("NUM:%d\n", NUM); aaa(); bbb(); getch(); return 0; } ////////////////// // A.cpp ///////////////// #include <stdio.h> #include "define.h" void aaa( void ){ printf("a: %d\n", a); printf("b: %d\n", b); printf("c: %d\n", Tmp[0].c); printf("NUM:%d\n", NUM); } ////////////////// // B.cpp ///////////////// #include <stdio.h> #include "define.h" void bbb( void ){ printf("a: %d\n", a); printf("b: %d\n", b); printf("c: %d\n", Tmp[0].c); printf("NUM:%d\n", NUM); } ////////////////// // define.cpp ///////////////// #include "define.h" int a = 10; int b = 20; struct Parameter { int c; }; struct Parameter Tmp[NUM]; ////////////////// // define.h ///////////////// #define NUM 100 extern int a; extern int b; extern struct Parameter Tmp[NUM]; void aaa( void ); void bbb( void );
- ベストアンサー
- C・C++・C#
- コンパイル結果が違う
コンパイル結果が違う C言語を勉強中の初心者です。 以下のプログラムをVC++6.0のCL.exeでコンパイルするとうまくいくのですが、VC++2010のCL.exeでコンパイルして実行すると、t2の値が0になってしまいます。 また、VC++2010でコンパイルした方が実行結果も遅いです。 #include <stdio.h> #include <time.h> int main(void) { int i = 1; time_t t1, t2; time(&t1); while(i <= 30000) printf("%d,", i++); time(&t2); printf("\ntime1=%ld time2=%ld\n", t1, t2); printf("かかった時間は、%d秒です\n", t2-t1); return 0; } vc++2010でコンパイルした方のt2の値が、0で表示されてしまうのはなぜでしょうか? よろしく、お願いします。
- ベストアンサー
- C・C++・C#
- コンパイルエラー
コンパイルしても、12行目(printf("%d番目の整数を入力してください。"i+1);が、関数呼び出しに)がないとでます。でもどこが間違っているか分かりません。 教えてください。お願いします。 #include <stdio.h> int main(void) { int num; int sum=0; int i; for(i=0; i<10; i++){ printf("%d番目の整数を入力してください。"i+1); scanf("%d", &num); sum+=num; } printf("合計は、%dです。\n", sum); return(0); }
- ベストアンサー
- C・C++・C#
- C++のコンパイルエラーが
おこります。 --------------------------------- #include <stdio.h> int main(void) { printf("hello, world\n"); return 0; } -------------------------------------- をコンパイルするのですができません。 以下のエラーが出ます。 --------------------------------------- エラー E2209 sample.c 1: インクルードファイル 'stdio.h' をオープンできない 警告 W8065 sample.c 5: プロトタイプ宣言のない関数 'printf' の呼び出し(関数 main ) *** 1 errors in Compile *** -------------------------------------
- 締切済み
- C・C++・C#
- コンパイルができません。
#include <stdio.h> main(){ int a = 1; int sum = 0; while( a<16) { sum = sum + a; a++; } printf("%d\n",sum); } 1から15まで足した結果を表示するプログラムですが、うまくいきません。教えてください。
- 締切済み
- C・C++・C#
お礼
貴重なご回答まことにありがとうございました。 なぜそうなるのか現在解析中です。 掲示板のご回答など 現在の私のレベルだと説明されてもまだそれを理解するスキルがないです。 なので、 参考書を読んでも、奥が深いので、分からないのが多いです。 現在、私が有力視しているプログラムのスキルアップは! 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"); は 削除しまして! 解析中するうえで、シンプル化したほうがわかりやすいので省きました。 頑張りますので今後ともよろしくお願いいたします。