問い1(続)

回答例は以下のようになります。

-- 回答欄 --
①【A】 不定   【B】 不定  【C】   1 
②【D】 不定   【E】 不定  【F】   2 
③【G】   9    【H】 不定 
④【I】   9    【J】 不定 

ここでの「不定」は、実行の都度どうなるか分からないという意味ではなく、コンパイラの実装に依存するということです。同じコンパイラで同じオプションでコンパイルされたものは同じ結果になります。

【実行結果の例】

Cコンパイラは、Microsoft Visual C、gcc、OpenWatcomを使用しました。
その他に、JavaとC#を加えてみました。

■ Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80×86 (Visual Studio 6.0)

① a[0] = 0, a[1] = 9, x = 1
② a[0] = 0, a[1] = 9, x = 2
③ x = 9, y = 0
④ x = 9, y = 46


■ Microsoft(R) C/C++ Optimizing Compiler Version 17.00.61030 for x86 (Visual Studio 2012)

① a[0] = 0, a[1] = 9, x = 1
② a[0] = 0, a[1] = 9, x = 2
③ x = 9, y = 0
④ x = 9, y = 81


■ gcc version 4.8.1 (GCC)

① a[0] = 9, a[1] = 0, x = 1
② a[0] = 1, a[1] = 0, x = 2
③ x = 9, y = 36
④ x = 9, y = 46


■ Open Watcom C/C++ x86 32-bit Compile and Link Utility Version 2.0 beta Jan 14 2014 11:34:32 (64-bit)

① a[0] = 9, a[1] = 0, x = 1
② a[0] = 9, a[1] = 0, x = 2
③ x = 9, y = 36
④ x = 9, y = 46


■ javac 1.7.0_45

① a[0] = 0, a[1] = 9, x = 1
② a[0] = 1, a[1] = 9, x = 2
③ x = 9, y = 36
④ x = 9, y = 45


■ Microsoft (R) Visual C# Compiler Version 4.0.30319.18408

① a[0] = 0, a[1] = 9, x = 1
② a[0] = 1, a[1] = 9, x = 2
③ x = 9, y = 36
④ x = 9, y = 45

 

マイクロソフト内でも、VC 6.0、VC 2012、C#4.0 のすべてが違う結果になっています。
JavaとC#は同じ結果になっています。

続きは改めて...


プログラムソースは、Cの他、JavaとC#を加え以下の通りです。

- プログラム(Prog01.c) -


- プログラム(Prog01j.java) -


- プログラム(Prog01cs.cs) -

 

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください