C# 表達式和運算符(求值順序)

求值順序

表達式可以由許多嵌套的子表達式構成。子表達式的求值順序可以使表達式的最終值發生
變化。
例如,已知表達式3*5+2,依照子表達式的求值順序,有兩種可能的結果,如圖9-3所示。

  • 如果乘法先執行,結果是17。
  • 如果5和2首先相加,結果為21。

簡單的求值順序

優先級

我們小學時就知道,在前面的示例中,乘法必須在加法之前執行,因為乘法比加法有更高的
優先級。讀小學的時候有4個運算符和兩個優先級級別,但C#中情況更復雜一些,它有超過45
個運算符和14個優先級級別。

全部的運算符和它們的優先級如表9-4所示。該表把最高優先級運算符列在頂端,之后優先
級持續下降,底端運算符優先級最低。

運算符優先級:從高到低

結合性

假設編譯器正在計算一個表達式,且該表達式中所有運算符都有不同的優先級,那么編譯器
將計算每個子表達式,從級別最高的開始,按優先等級從高到低一直計算下去。
但如果兩個連續的運算符有相同的優先級別怎么辦?例如,已知表達式2/6*4,有兩個可能
的求值順序:

(2/6)*4=4/3
或
2/(6*4)=1/12

當連續的運算符有相同的優先級時,求值順序由操作結合性決定。也就是說,已知兩個相同
優先級的運算符,依照運算符的結合性,其中的一個或另一個優先。運算符結合性的一些重要特
征如下所示,另外,表9-5對此做了總結。

  • 左結合運算符從左至右求值。
  • 右結合運算符從右至左求值。
  • 除賦值運算符以外,其他二元運算符是左結合的。
  • 賦值運算符和條件運算符是右結合的。
    因此,已知這些規則,前面的示例表達式應該從左至右分組為(2/6)*4,得到4/3。

運算符結合性總結

可以使用圓括號顯式地設定子表達式的求值順序。括號內的子表達式:

  • 覆蓋優先級和結合性規則;
  • 求值順序從嵌套的最內層到最外層。

簡單算術運算符

簡單算術運算符執行基本四則算術運算,如表9-6所示。這些運算符是二元左結合運算符。
簡單算術運算符

算術運算符在所有預定義簡單數學類型上執行標準的算術運算。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/84222.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84222.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84222.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

高頻面試之3Zookeeper

高頻面試之3Zookeeper 文章目錄 高頻面試之3Zookeeper3.1 常用命令3.2 選舉機制3.3 Zookeeper符合法則中哪兩個?3.4 Zookeeper腦裂3.5 Zookeeper用來干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 選舉機制 半數機制(過半機制&#xff0…

CppCon 2015 學習:Simple, Extensible Pattern Matching in C++14

什么是 Pattern Matching(模式匹配) ? 模式匹配就是一種“描述式”的寫法,不需要你手動判斷、提取數據,而是直接描述你希望的數據結構是什么樣子,系統自動判斷并提取。? 你給的定義拆解: ? Instead of …

刷題記錄(7)二叉樹

一、單值二叉樹 二叉樹為二叉鏈表形式,結點為: 大概看看題就知道這道題讓我們判斷一個樹到底所有結點的值是不是相同,相同就是單值二叉樹。在實現二叉樹相關操作的時候已經體會到了,遞歸來遍歷二叉樹是非常舒服的(做這…

開源:FTP同步工具

文章目錄 簡介功能特性Windows (EXE)從源代碼構建依賴項Linux 構建Windows 構建 使用方法軟件截圖主界面FTP 設置快捷菜單定時設置 配置說明開發與貢獻許可證 歡迎來到盹貓的博客 本篇文章主要介紹了 [開源:FTP同步工具] ?博主廣交技術好友,喜歡我的文章的可以關注…

視頻質量測試點

目錄 功能/UI 端側性能 媒體質量 主觀 客觀 穩定性 兼容性 功能/UI 視頻預覽音頻預覽音視頻同步全屏收藏打賞 端側性能 PC端:內存占用、網絡帶寬占用等; 移動端:內存占用、功耗、發熱、流量消耗等; 媒體質量 主觀 音…

Ray框架:分布式AI訓練與調參實踐

Ray框架:分布式AI訓練與調參實踐 系統化學習人工智能網站(收藏):https://www.captainbed.cn/flu 文章目錄 Ray框架:分布式AI訓練與調參實踐摘要引言框架架構解析1. 核心組件設計2. 關鍵技術實現2.1 動態資源調度2.2 …

成都鼎訊硬核科技!雷達目標與干擾模擬器,以卓越性能制勝電磁頻譜戰

在現代戰爭中,電磁頻譜已成為繼陸、海、空、天之后的 “第五維戰場”,雷達作為電磁頻譜領域的關鍵裝備,其干擾與抗干擾能力的較量,直接影響著戰爭的勝負走向。由成都鼎訊科技匠心打造的雷達目標與干擾模擬器,憑借數字射…

ubuntu22.04 安裝docker 和docker-compose

首先你要確保沒有docker環境或者使用命令刪掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安裝docker 更新軟件環境 sudo apt update sudo apt upgrade下載docker依賴和GPG 密鑰 # 依賴 apt-get install ca-certificates curl gnupg lsb-rel…

2025 后端自學UNIAPP【項目實戰:旅游項目】6、我的收藏頁面

代碼框架視圖 1、先添加一個獲取收藏景點的列表請求 【在文件my_api.js文件中添加】 // 引入公共的請求封裝 import http from ./my_http.js// 登錄接口(適配服務端返回 Token) export const login async (code, avatar) > {const res await http…

20250609在榮品的PRO-RK3566開發板的Android13下解決串口可以執行命令但是腳本執行命令異常的問題

20250609在榮品的PRO-RK3566開發板的Android13下解決串口可以執行命令但是腳本執行命令異常的問題 2025/6/9 20:54 緣起,為了跨網段推流,千辛萬苦配置好了網絡參數。 但是命令iptables -t filter -F tetherctrl_FORWARD可以在調試串口/DEBUG口正確執行。…

【C/C++】高效的位操作

位運算(Bitwise Operation)是直接對整數的二進制位進行操作的運算方式,在底層開發、性能優化、算法設計中廣泛使用。 1 基本位運算符及含義 運算符名稱示例(a5, b3)運算過程(二進制)結果&按…

后端下載限速(redis記錄實時并發,bucket4j動態限速)

? 使用 Redis 記錄 所有用戶的實時并發下載數? 使用 Bucket4j 實現 全局下載速率限制(動態)? 支持 動態調整限速策略? 下載接口安全、穩定、可監控 🧩 整體架構概覽 模塊功能Redis存儲全局并發數和帶寬令牌桶狀態Bucket4j Redis分布式限…

android app 一個 crash的解決過程!

一、日志: crash 2024-10-25 12:15:33.020 2113-2113 AndroidRuntime pid-2113 E FATAL EXCEPTION: main Process: com..workhome, PID: 2113 java.lang.RuntimeException: Unable to start activity ComponentInfo{com..w…

[Java 基礎]Object 類

java.lang.Object 是 Java 所有類的直接或間接父類,Java 中每個類都默認繼承 Object 類(即使你沒寫 extends Object)。 Object 中的常用方法: 方法名功能簡介toString()返回對象的字符串表示equals(Object)判斷兩個對象是否“邏…

大數據學習(135)-Linux系統性指令

🍋🍋大數據學習🍋🍋 🔥系列專欄: 👑哲學語錄: 用力所能及,改變世界。 💖如果覺得博主的文章還不錯的話,請點贊👍收藏??留言📝支持一…

【Fifty Project - D35】

今日完成記錄 TimePlan完成情況7:00 - 7:40爬坡√8:30 - 11:30Rabbit MQ√17:30 - 18:30羽毛球√ RabbitMQ 消費者端如何保證可靠性? 消息投遞過程出現網絡故障消費者接收到消息但是突然宕機…

P3 QT項目----記事本(3.4)

3.4 文件選擇對話框 QFileDialog 3.4.1 QFileDialog 開發流程 使用 QFileDialog 的基本步驟通常如下: 實例化 :首先,創建一個 QFileDialog 對象的實例。 QFileDialog qFileDialog;設置模式 :根據需要設置對話框的模式&…

學習筆記(26):線性代數-張量的降維求和,簡單示例

學習筆記(26):線性代數-張量的降維求和,簡單示例 1.先理解 “軸(Axis)” 的含義 張量的 “軸” 可以理解為 維度的方向索引 。對于形狀為 (2, 3, 4) 的張量,3 個軸的含義是: 軸 0(axis0&…

健康檔案實訓室:構建全周期健康管理的數據基石

一、健康檔案實訓室建設背景 隨著“健康中國2030”戰略深入推進,健康檔案作為居民健康數據的核心載體,在疾病預防、慢性病管理、醫療決策等領域的價值日益凸顯。在此背景下,健康檔案實訓室建設成為職業院校對接政策要求、培養專業健康管理…

【MATLAB第119期】基于MATLAB的KRR多輸入多輸出全局敏感性分析模型運用(無目標函數,考慮代理模型)

【MATLAB第119期】基于MATLAB的KRR多輸入多輸出全局敏感性分析模型運用(無目標函數,考慮代理模型) 下一期研究SHAP的多輸入多輸出敏感性分析方法 一、SOBOL(無目標函數) (1)針對簡單線性數據…