<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                從最簡單的運算符加號(+)說起,加號(+)是個二元運算符——也就是說,**加號只把兩個數聯接起來,從來不把第三個或者更多的聯接起來**。 因此,“1加2加3” 在計算機中被表述為: ~~~ (1 + 2) + 3 // a ~~~ 或者 ~~~ 1 + (2 + 3) // b ~~~ 雖然我們通常寫做?`1 + 2 + 3`,但是并不意味這它和我們數學中的 1+2+3 是等價的。 那么數學中的 1+2+3 到底表示的是 a 呢,還是 b 呢? 如果計算機的求值是左結合的,那么此表達式等價于第一種a; 如果是右結合的,那么此表達式等價于第二種b。 `1 + 2 + 3`?簡單的理解就是 “把1、2、3加在一起”, 確實,在我們接觸到的數學里面,就是把三個數加起來。 但是在編程語言中,卻不僅僅這樣。 就像前面說的那樣,+號無法操作三個或者更多的數,參與加法運算的只能是兩個數。 順便說一句,正號、負號是一元運算符,雖然它們和二元運算符加、減用相同的符號, 但是他們卻是不同的,所以不要想當然的認為 +4 就等價于 0+4,其實它們不是等價的, **+4 是一個整數,但是 0+4 是一個加法表達式,這個表達式的求值結果正好是 +4**。 在 java 中,我們可以寫?`short a = +4`,但是當我們寫?`short a = 0 + 4`?時則產生一個警告。 還有一個其它例子,同樣是關于 short 的, ~~~ short b = 1; short b = b + 4; // 警告 short b += 4; // 無警告 ~~~ 那么?`1 + 2 + 3`?是如何運算的呢? 在馮諾依曼體系架構的編程語言中, 這里有一個副作用——我習慣稱那些“計算機的運算過程與程序員的大腦思考過程不一樣時,則稱為副作用”(雖然書本里面沒有這么寫過,但我一向這么認為),?**本來你以為會是這樣,結果計算機偏偏就不是這樣做的,我稱他為副作用。** 如果看過前面的『[語句與表達式](http://justjavac.com/codepuzzle/2012/10/28/codepuzzle-expression-and-statement.html)』,這可以這么理解: 1 + 2 是一個表達式,它的返回值是 3。 這個表達式的返回值再參加到另一個表達式中 3 + 3,最后得出結果6。 我們用語句(Statement)來改寫這段代碼: ~~~ // 計算 1 + 2 + 3 var a = 1 + 2; var b = b + 3; ~~~ 如果我們用 lisp 語言對這個表達式求值,則沒有副作用。 ~~~ (+ (+ 1 2) 3) ~~~ 如果你還沒有懂,或者這個例子太有特殊性,那么我們換一個 ~~~ 5 > 4 > 3 ~~~ 在數學中,這個算式的值為 true。當我們用C語言來寫這段代碼,它返回的確實 false。 原因和上面的一樣,大于號(>)是二元運算,它無法直接比較三個數,5 > 4 返回的結果是 true, 當用 true 和 3 比較時,true 被轉換稱 1,也就是?`1 > 3`,最終的結果自然就是 false 了。 總之,回歸到了『[語句與表達式](http://justjavac.com/codepuzzle/2012/10/28/codepuzzle-expression-and-statement.html)』篇的那個觀點:在編程語言中?**每個表達式都有一個值**。 編程語言中的運算符和數學中的運算器雖然一樣,但是它們卻并不等同。?**當你寫程序時,要寫給人看; 當你調試程序時,要學會用計算機的方式思考代碼的含義。** 我習慣于把運算符理解為函數,比如 2 + 5 其實就是 add(2, 5) 或者 2.add(5)。 難道我會偷偷的告訴你 “其實很多語言都是這么做的”。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看