C#入門學習記錄(四)C#運算符詳解:掌握算術與條件運算符的必備技巧+字符串拼接

一、運算符概述

????????運算符是程序進行數學運算、邏輯判斷的核心工具,C#中的運算符分為:

算術運算符 → 數學計算(+ - * / %)
條件運算符 → 三目判斷(?:)
關系運算符 → 比較大小(> < ==)
邏輯運算符 → 邏輯判斷(&& || !)
賦值運算符 → 賦值操作(= +=)

二、算術運算符深度解析

1. 基礎運算符

int a = 10 + 5;    // 15(加法)
int b = 20 - 3;    // 17(減法)
int c = 6 * 7;     // 42(乘法)
double d = 22.0 / 7; // 3.1428...(精確除法)
int e = 22 / 7;    // 3(整數截斷)
int f = 25 % 7;    // 4(余數計算)

2. 特殊運算符技巧

// 自增自減(前綴/后綴差異)
int x = 5;
Console.WriteLine(x++); // 輸出5,后變為6
Console.WriteLine(++x); // 變為7,后輸出7// 復合賦值
int y = 10;
y += 3;  // 等價于 y = y + 3 → 13

3. 浮點運算陷阱

double val = 10 / 3;     // 錯誤!結果為3.0(整數運算后轉double)
double correctVal = 10.0 / 3; // 正確:3.333...

三、條件運算符?: 的三層境界

1. 基礎用法

如果為?:問號前面的條件為true,則去:左邊的值反之為右邊的

int max = (a > b) ? a : b; // 取較大值
string msg = (score >= 60) ? "合格" : "不合格";

2. 嵌套使用(需謹慎)

// 判斷數字正負性
string sign = (num > 0) ? "正數" : (num < 0) ? "負數" : "零";

等價于:

string sign;
if (num > 0) 
{sign = "正數";
}
else 
{if (num < 0) {sign = "負數";}else {sign = "零";}
}

?

3. 與null合并符結合

這個和上篇文章介紹的一樣,就是一個判空的作用

string name = inputName ?? "匿名用戶"; // 相當于:
// string name = (inputName != null) ? inputName : "匿名";

四、其他運算符速查表

關系運算符(Comparison Operators)?

????????用于比較兩個值的大小關系,返回bool類型結果。

運算符說明示例代碼結果(假設a=5,?b=3
>大于bool c = a > b;true
<小于bool c = 2 < 1;false
>=大于等于bool c = a >= 5;true
<=小于等于if (b <= 3) { ... }條件成立
==等于if (a == 5) { ... }執行代碼塊
!=不等于string s = (name != null) ? name : "";非空校驗

邏輯運算符(Logical Operators)?

用于組合或反轉布爾邏輯,常用于條件判斷。

邏輯與又稱為短路運算

運算符說明示例代碼結果(假設x=true,?y=false
&&邏輯與bool c = x && y;false
||邏輯或`有成立就成立
!邏輯非bool c = !y;true

位運算符(Bitwise Operators)?

直接對整數的二進制位進行操作,常用于標志位、掩碼運算。

運算符說明示例代碼二進制運算過程(以a=0b1010,?b=0b1100為例)
&按位與int c = a & b;1010 & 1100 → 1000(十進制8)
||按位或|flags = flags
^按位異或int c = a ^ b;1010 ^ 1100 → 0110(十進制6)
~按位取反int c = ~a;~0b1010 → 1111 0101(補碼表示)
<<左移int c = 1 << 3;0b0001 → 0b1000(十進制8)
>>右移int c = 8 >> 2;0b1000 → 0b0010(十進制2)

????????注意事項:

  1. ?位運算 vs 邏輯運算

    • 位運算符(&,?|)操作的是整數的二進制位
    • 邏輯運算符(&&,?||)操作的是布爾值
  2. ?位移運算溢出
int x = 1 << 31; // 對于32位int,結果為-2147483648(溢出)

五、避坑指南

  1. ?整數除法陷阱:10/4=2,需顯式轉換為浮點
  2. ?運算符優先級x = 5 + 3 * 2;?→ 11,而非16
  3. ?浮點精度問題:避免用==直接比較浮點數
  4. ?自增時序:循環中使用i++與++i可能影響結果

六、字符串拼接相關

一、基礎拼接方法

1.?+?運算符(最常用)
string name = "Alice";
int age = 28;// 簡單拼接
string info1 = "姓名:" + name + ",年齡:" + age; // 混合類型自動轉換
Console.WriteLine("ID:" + 1001 + " Score:" + 95.5); 
2.?String.Concat?方法
// 多參數拼接
string fullName = String.Concat("張", "三", "豐"); // 數組合并
string[] colors = {"Red", "Green", "Blue"};
string colorStr = String.Concat(colors); // "RedGreenBlue"

二、進階拼接方案

1. 字符串插值
// 使用$符號
string message = $"當前時間:{DateTime.Now:HH:mm:ss}";// 支持表達式
double price = 19.99;
string display = $"折后價:{price * 0.8:C2}"; // ¥15.99
2.?String.Format(格式化控制)
// 定位參數
string template = "CPU溫度:{0}℃,內存使用:{1}%";
string status = String.Format(template, 65.3, 78);// 格式規范
string hex = String.Format("0x{0:X4}", 255); // 0x00FF
3.?StringBuilder(高頻操作必備)

這塊我們后面會再次遇到的!

using System.Text;StringBuilder sb = new StringBuilder(1024); // 預分配容量
for(int i=0; i<100; i++){sb.Append(i).Append(" ");
}// 最終轉換為字符串
string result = sb.ToString(); 

三、特殊場景處理

1. 集合拼接:String.Join
List<string> files = new List<string>{"file1.log", "file2.dat"};
// 帶分隔符的拼接
string path = String.Join("; ", files); // 數值類型轉換
int[] numbers = {1,2,3};
string nums = String.Join(",", numbers); // "1,2,3"
2. 多行文本:Verbatim字符串

這個是SQL,C#通過字符串拼接生成的SQL查詢命令。等用到的時候再去查詢就是

string sql = $@"SELECT *
FROM Users
WHERE Age > {minAge} AND City = '{city}'";
3. 條件拼接
string welcome = "歡迎" + (isVIP ? "尊貴的VIP用戶" : "用戶");

注意:

  1. ?字符串不可變性?每次拼接都會創建新字符串對象,原對象成為垃圾(不過C#自己有垃圾回收機制GC不用自己手動釋放)

  2. ?內存碎片問題?大量小字符串拼接會導致內存碎片

  3. ?預分配機制?StringBuilder通過char數組減少擴容次數

附錄:

C#中常用的格式說明符(Format Specifiers)?及其用法的詳細分類表格:

一、數字格式說明符

格式符名稱描述示例輸入(值=1234.56)輸出示例(默認區域)適用類型
CCurrency貨幣格式(帶符號)1234.56.ToString("C2")¥1,234.56數值類型
DDecimal整數補零(僅整數)123.ToString("D6")000123僅整數類型
EExponential科學計數法1234.56.ToString("E2")1.23E+003浮點數/雙精度
FFixed Point定點數(指定小數位)1234.56.ToString("F1")1234.6數值類型
GGeneral自動選擇最緊湊格式1234.5.ToString("G")1234.5所有數值類型
NNumber帶千位分隔符1234.56.ToString("N0")1,235數值類型
PPercent百分比格式0.123.ToString("P1")12.3%數值類型
XHexadecimal十六進制(大小寫敏感)255.ToString("X4")00FF僅整數類型

二、日期時間格式說明符

格式符示例輸出(日期=2023-10-5 14:30:00)描述
d2023/10/5短日期格式
D2023年10月5日長日期格式
t14:30短時間格式
T14:30:00長時間格式
f2023年10月5日 14:30長日期+短時間(組合)
F2023年10月5日 14:30:00完整日期時間
g2023/10/5 14:30通用短格式
G2023/10/5 14:30:00通用長格式
m10月5日月日格式
y2023年10月年月格式
s2023-10-05T14:30:00ISO 8601 可排序格式

三、自定義格式符

符號作用示例(值=1234.5)輸出結果
0強制數字占位符1234.5.ToString("00000.00")01234.50
#可選數字占位符1234.5.ToString("#####.##")1234.5
.小數點1234.ToString("0.000")1234.000
,千位分隔符/比例縮放1234567.ToString("#,#")1,234,567
%百分比乘數(自動×100)0.123.ToString("0.0%")12.3%
;分節符(正數/負數/零格式)1234.5.ToString("+0.0;-0.0;零")+1234.5

完整格式說明符文檔可參考微軟官方文檔:

標準數字格式字符串 - .NET | Microsoft Learn

自定義數字格式字符串 - .NET | Microsoft Learn

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

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

相關文章

Linux中安裝Git

安裝Git 安裝git&#xff0c;我們可以使用yum指令在線安裝&#xff0c;這里&#xff0c;我們先對yum做一個簡單介紹。 執行下面命令 #查看可用的git安裝包 yum list git #安裝git yum install -y git 查看git安裝包 安裝git 驗證是否安裝成功 安裝完畢之后&#xff0c;我們…

開源免費一句話生成兒童故事視頻核心思想解析

再看一個演示視頻&#xff0c;學會核心思想后&#xff0c;可以打造自己的內容生成工具&#xff0c;后文有基于飛書多維表格的實現效果&#xff1a; 一句話靈感生成兒童故事視頻演示 這是一款專門為內容素材創作打造的創新工具&#xff0c;可根據用戶輸入的主題&#xff0c;快速…

Linux上的`i2c-tools`工具集的詳細介紹;并利用它操作IMX6ULL的I2C控制器進而控制芯片AP3216C讀取光照值和距離值

IC-Tools 工具集介紹 i2c-tools 是 Linux 下用于 IC 設備調試 的用戶空間工具集(你也可以把它看成是一個庫&#xff0c;類似于之前自己用過的觸摸屏庫tslib庫、FreeType矢量字符庫)&#xff0c;它提供了一系列命令行工具&#xff0c;可以掃描、讀取、寫入 IC 設備&#xff0c;…

Windows 部署 RuoYi 前后端分離項目

目錄 ruoyi-vue部署 ruoyi源碼類型 若依官方地址 RuoYi-Vue 前后端分離版 環境 工具 windows開發環境 jdk安裝 (安裝位置默認) 雙擊點擊安裝 步驟 耐心等待加載完畢&#xff0c;路徑默認 等待安裝完成即可 快速打開文件資源管理器 進入高級系統設置 系統屬性&#…

《C語言中的ASCII碼表:解鎖字符與數字的橋梁》

&#x1f680;個人主頁&#xff1a;BabyZZの秘密日記 &#x1f4d6;收入專欄&#xff1a;C語言 &#x1f30d;文章目入 一、什么是ASCII碼表&#xff1f;二、ASCII碼表的結構1. 控制字符&#xff08;0-31 和 127&#xff09;2. 可打印字符&#xff08;32-126&#xff09; 三、完…

Git刪除并重新推送遠程分支操作

在 Git 中&#xff0c;如果你刪除了遠程分支并希望重新推送一個新的遠程分支&#xff0c;可以按照以下步驟操作&#xff1a; 1. 刪除遠程分支 首先&#xff0c;刪除遠程分支&#xff1a; git push origin --delete <branch-name>其中&#xff0c; 是你要刪除的遠程分支…

連接不上雷電模擬器,adb連接不上問題的解決辦法

win7升win10后&#xff0c;adb shell連接不上&#xff0c;找不到指定文件&#xff0c;具體如下 f:\AndroidTool_Release_v2.35\bin>adb shell * daemon not running; starting now at tcp:5037 adb: CreateFileW nul failed: 系統找不到指定的文件。 (2) * failed to start…

el-table 插槽踩過的坑 :slot-scope 和#default的區別

slot-scope和#default是Vue中用于定義插槽的兩種不同語法&#xff0c;它們在Vue 2和Vue 3中有不同的應用場景和語法規則。? slot-scope 在?Vue 2.x?中&#xff0c;slot-scope是用于聲明具名插槽并獲取父組件傳遞過來的數據的主要方式。通過slot-scope可以定義一個變量scop…

一、初始 Linux

文章目錄 一、操作系統概述二、Linux 初識1. Linux 的組成2. Linux 發行版 三、遠程鏈接 Linux 系統1. 四、WSL (windows subsystem for linux)1. 什么是 WSL2. 如何下載 WSL3. 安裝不同的 Linux 發行版4. 啟動停止使用指定發行版5. 卸載與備份6. 文件共享7. 命令混用8. 用 vsc…

力扣128. 最長連續序列 || 452. 用最少數量的箭引爆氣球

最長連續列 給定一個未排序的整數數組 nums &#xff0c;找出數字連續的最長序列&#xff08;不要求序列元素在原數組中連續&#xff09;的長度。 請你設計并實現時間復雜度為 O(n) 的算法解決此問題。 輸入&#xff1a;nums [100,4,200,1,3,2] 輸出&#xff1a;4 解釋&…

Python教學:lambda表達式的應用-由DeepSeek產生

Python 中的 ?lambda 表達式?是一種簡潔的匿名函數&#xff0c;適合快速定義簡單邏輯的函數。它常用于需要函數作為參數的場景&#xff0c;如高階函數、排序、過濾等。以下是 lambda 的典型應用場景及示例&#xff1a; 1. ?基本語法? lambda 參數1, 參數2, ... : 表達式 特…

3D標定中的平面約束-平面方程的幾何意義

平面方程的一般形式為 AxByCzD0&#xff0c;其中系數 A、B、C、D共同決定了平面的幾何特性。 系數對平面姿態的影響 1. 法向量方向2. 平面位置3. 比例關系4. 姿態變換5.平面空間變換 1. 法向量方向 法向量方向由 A、B、C 決定 核心作用&#xff1a;系數 A、B、C 構成的向量 (…

C/C++藍橋杯算法真題打卡(Day6)

一、P8615 [藍橋杯 2014 國 C] 拼接平方數 - 洛谷 方法一&#xff1a;算法代碼&#xff08;字符串分割法&#xff09; #include<bits/stdc.h> // 包含標準庫中的所有頭文件&#xff0c;方便編程 using namespace std; // 使用標準命名空間&#xff0c;避免每次調用…

如何在 GoLand 中設置默認項目文件夾

在使用 GoLand 進行開發時&#xff0c;設置一個默認的項目文件夾可以大大提高工作效率。默認項目文件夾會在你打開或新建項目時自動預選&#xff0c;避免每次都需要手動導航到目標目錄。本文將詳細介紹如何在 GoLand 中設置默認項目文件夾。 步驟一&#xff1a;打開系統設置 …

DeepSeek私有化部署與安裝瀏覽器插件內網穿透遠程訪問實戰

文章目錄 前言1. 本地部署OllamaDeepSeek2. Page Assist瀏覽器插件安裝與配置3. 簡單使用演示4. 遠程調用大模型5. 安裝內網穿透6. 配置固定公網地址 前言 最近&#xff0c;國產AI大模型Deepseek成了網紅爆款&#xff0c;大家紛紛想體驗它的魅力。但隨著熱度的攀升&#xff0c…

Docker運行postgreSQL,由于異常啟動或者退出后,提示could not locate a valid checkpoint record

pg_resetwal 是 PostgreSQL 的“急救工具”&#xff0c;用于在極端情況下修復因 WAL 或控制文件損壞導致的啟動問題。 但需注意&#xff1a; 風險極高&#xff0c;可能導致數據不一致。必須立即轉儲并恢復&#xff0c;避免直接在修復后的數據庫中執行寫操作。僅在備份后使用&…

pytorch小記(十):pytorch中torch.tril 和 torch.triu 詳解

pytorch小記&#xff08;十&#xff09;&#xff1a;pytorch中torch.tril 和 torch.triu 詳解 PyTorch torch.tril 和 torch.triu 詳解1. torch.tril&#xff08;計算下三角矩陣&#xff09;&#x1f4cc; 作用&#x1f50d; 語法&#x1f539; 參數&#x1f4cc; 示例&#x1…

Java基礎與集合

參考 Java基礎知識詳解&#xff1a;從面向對象到異常處理-CSDN博客 2024年 Java 面試八股文&#xff08;20w字&#xff09;_java面試八股文-CSDN博客 基礎知識 java概述 什么是java&#xff1f; java是一種面向對象的編程語言 java特點 面向對象&#xff08;繼承&#…

【R語言】二項分布,正態分布,極大似然估計實現

二項分布 生成二項分布概率 s <- 0:60 prob <- dbinom(s, size 60, prob 1/6)s <- 0:60&#xff1a;生成 0 到 60 之間的整數&#xff0c;表示可能的成功次數。 dbinom(s, size 60, prob 1/6)dbinom(x, size, prob) 計算二項分布的概率質量函數&#xff08;PMF…

【C語言】:學生管理系統(多文件版)

一、文件框架 二、Data data.txt 三、Inc 1. list.h 學生結構體 #ifndef __LIST_H__ #define __LIST_H__#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdbool.h> #include <time.h>#define MAX_LEN 20// 學生信息…