2012-03-01 7 views
1

What does each expression evaluate to? Assume x is 2 before each one.ポストインクリメントおよびプリインクリメントは、

  • int num = x++ * 3;
    は、したがって、この(2)* 3またはNUM = 6、xは今3

  • num *= x;
    NUM = 2に相当するであろう式* 2または4

  • (x < 2) && (x > 1)
    は、偽になる(2 < 2)= FALためseと(2> 1)= trueの場合はfalseです。

  • (++x < 2) || (x < 1)
    (3<2)偽その後、((2+1)<1)でも偽であるので、それは偽ですか?
    この場合、ブレーク前の変数にプリインクリメントが適用されていますか? 2番目のxの値を3または2にする必要がありますか?
    私はポストインクリメントについても同じ質問があります。私はnum=x++ *x++があり、初期のx = 2としましょう。これは2 * 2か2 * 3ですか?

+0

あなたは「壊れ」ているのですか? –

+0

4番目に。 preincrementは最初の括弧内にあるので(特別な名前が付いていることを確かめます)、2番目のかっこの比較でxの値に影響しますか? – Chris

+0

xの値が、ANDまたはOR文の前半で前/後に増分される場合と同様に、後半の値に影響しますか? – Chris

答えて

1

「ブレーク」が発生する前にインクリメントされます。基本的にはJavaが最初に行うことです(括弧はまだ実際には最初のものです)。だから(++ x < 2)|| (++ x < 3)2番目の++ xが真でない場合、最初の++ xの後に起こります。

+0

私は、ステートメントを実行する前に、前半のxの値に1を加えることに気づきます。 'var x = 2;'
'(x ++ <4)&&(x == 2);'
2番目のステートメントは真か偽かを示します。私はプリインクリメントが行全体のx値に影響するかどうか疑問に思っています。 – Chris

+1

2番目のステートメントはfalseです。 – fbernardo

+0

@Chris:なぜあなたはそれを実行しないのですか?結果が 'false'の場合、2番目のステートメントは' false'です。それが「真」であれば「真」です。それは簡単に見つけることができます。 –

0

はいこれはいくつかの非常に基本的な概念です。 jUnitのようなunittestフレームワークをダウンロードしてください。次に、何が起こっているかを正確に示すいくつかのアサートで、これらのテストをすばやく実行できます。それほどオーバーヘッドがなくてもこれを行うもう1つの方法は、コンソールに印刷することです。

int num = x++ * 3; 
System.out.println("num=" + num); // num=6 
+0

私はEclipseまたはSDKのどちらかをインストールするための管理者権限がありません。誰かがこのクールなオンラインJavaランナーを投稿しましたが、私は今使っています。 – Chris

1

int num = x++ * 3; => OK:X = 3、NUM = 6
num *= x; => NUMの初期値は何ですか? num = 2ならば、あなたもOKです。
(x < 2) && (x > 1)私はjavacのソースとX ++で特にLowerクラスOpenJDKの、見ていた覚えているときはx = 2、OKだけでなく

のx = 2、OK
(++x < 2) || (x < 1)がfalseの場合はfalseですx + = 1に変換されますので、
((x += 1)) < 2)のように表示されます(タイプなしキャスト):((x = (x + 1)) < 2)。 2番目のテストでは、新しいx値、つまりJavaが条件を左から右に評価するため3になります。

0
num *= x; 
num =2*2 or 4 

私はあなたがどこにいるのかわかりません。

num *= x;は、num = num * x;に相当します。 numが6だった場合(前のステートメントから)、今度は12になります(xはまだ2であると仮定します)。

+0

"xがそれぞれ前に2であると仮定します" ... – fbernardo

+0

この場合、xは最初の合計の後で3になるので、numは18になります。 –

+0

彼女が私に与えたことは何ですか。私は、すべてのプログラムが2で初期化されたx値で分離されていると仮定していると思う。 – Chris

0
  1. "xはそれぞれ前に2であると仮定します。"それは与えられた前提か、それともあなたが作っている前提ですか?私はあなたがその前提を作ることができるとは思わない。私はあなたがこれらの文をすべて順番に評価したと信じています。
  2. a *= bの拡張形式は何ですか?
  3. 2番目のステートメントでは、numの初期値は何ですか?
  4. xがインクリメントされているため、最後のステートメントで正しく(最初の条件が正しいと仮定して)計算すると、(2+1) < 1が計算されます。

各文の後にxnumの値を記録してください。正しい答えが得られると思います。

幸運を祈る!

関連する問題