首頁>Club>
4
回覆列表
  • 1 # EXCEL進階課堂

    首先需要說明的是:在實際工作當中,最好不要寫出這樣的表示式。因為這樣會引起歧義,違反了程式設計的基本原則。

    這種表示式,多半都是出現在學習過程中的練習題,或是考試當中。

    在表示式當中,結合分為右結合和左結合,而與結合關係緊密的是優先順序。

    關於結合的基本原則

    有一個關於結合的基本原則,需要我們切記:在C語言當中,儘量多地保證結合是按左結合進行:即自左向右進行結合。

    按這個原則,問題當中的:-j---i,利用結合就可以分段為(-j--)-i

    關於自減的基本原則

    自增或自減運算子的基本原則是:它們只能與一個變數結合,而不是一個表示式。這樣的話,問題當中的:-j---i,就應該理解成(-(j--))-i,而不應該理解成:

    ((-j)--)-i

    表示式值的計算結果

    按照上面的分析,我們弄清楚了結合方向以後,然後我們假定i=3,j=4,則-j---i表示式的值為-7。

    具體計算過程如下:

    dev-c中驗證如下:

    VC6.0中驗證如下:

  • 2 # 碼農奮鬥之路

    先說結果吧:((-(j--))-i)

    實踐是最好的老師,我們先直接看例子:

    編譯器在分析語義的時候一般採用貪心的策略,也就是如果下一個字元加上當前字元仍然是合法的,那麼就把這個整體當一個運算子,這種方法也被叫做“大嘴法”。

    C 語言的分詞方式是從左到右貪心法,每一個運算子都是從左到右儘可能長所以是

    - j -- - i考慮優先順序,字尾運算子優先順序比字首運算子高所以是(-(j--))-i。

    實際專案中,如果你寫這樣的程式碼,估計會被打死吧。建議還是少看寫譚老爺子的書,盡是考類似於i+++++i等於多少這種問題,順便吐槽一下國內的C語言課程考試,個別公司的筆試面試題,這樣的題目有什麼意義呢?你多動動手多敲幾個括號,又會浪費你多長時間呢?在你不確定優先順序的時候多用用括號,即方便了自己,又方便了他人,何樂而不為呢?

  • 中秋節和大豐收的關聯?
  • 曼谷一日遊當天回清邁,可以去哪些地方玩?