2017-06-21 5 views
0

スウィフト言語質問スイフト:なぜこのスウィフトチャレンジの答えは-3ですか?

こんにちはみんな、私はあなたの忍耐に感謝ので、私はプログラミングに新しいです。私は現在、さまざまなプラットフォームを通じて学習しています。以下は私が正しいと思った質問でしたが、私は理由を理解していません。

私に答えを説明できれば、誰にでも助けていただきたいと思います。

"c"の値は何ですか?

var a = 3 
    let b = a++ 
    let c = -b 

答えは-3ですが、理由はわかりません。私が知っている重要性は、bとcの違いが不変であり、aが変更可能であることです。

**はインクリメンタ(+ = 1に相当)ですので、答えは-1と思っていましたか?

+6

、 '--'と' ++が '削除されました。 –

答えて

1

注:このコードはSwift 2以前のSwift 3より前にのみ機能していたので、アルゴリズムに関する議論が増えました。

var a = 3 
let b = a++ 
let c = -b 

はのは、行ごとにそれを見てみましょう:

var a = 3 

これは、変数aを宣言し、3にそれを初期化します。あなたはこのコードを持っている


aの現在の値は3です。その後:

let b = a++ 

これはbの値は後3あるaの最初の(現在の)値にbの値を設定し、aの値を増加させるためにポストインクリメント演算子++を使用します3に設定します。従ってa4に等しくなりますが、bはまだ3です。

let c = -b 

c宣言と-bに初期化され、bは現在3ので、c-3となっています。言われて、あなたのコードと等価であることを


:コードはスウィフト3にはもうコンパイルしないこと

var a = 3 
let b = a; a += 1 
c = -b 
+0

どのようなファブの答え、ありがとう。 – rb2030

+0

@ rb2030ようこそ! –

0

まずそのコードが最初の文でスウィフト3.0

にもう働かないvar a = 3は、あなたが実際にそのポストインクリメント演算子以降の値を大きくしていない第二の文let b = a++で= 3 の値になります。したがって、bの値は3のままです。 3番目の文では、let c = -bは単純にc = -3にします。

+0

すばらしい、完璧な感覚、よかった。 – rb2030

関連する問題