C#初級教程(3)——變量與表達式:從基礎到實踐

一、為什么使用變量

????????計算機程序本質上是對數據的操作,數字、文字、圖片等在計算機中都屬于數據。而變量,就是數據在計算機內存中的 “棲息地”。我們可以把變量想象成一個個小盒子,這些盒子能存放各種數據,需要時還能隨時取出


二、變量的聲明與使用

(一)聲明變量

????????聲明變量需要明確指定類型和變量名,基本格式為<type> <name>;?。這里的type代表變量的數據類型,就像是不同規格的盒子,決定了能裝什么數據;name則是變量的名字,方便我們在程序中找到對應的 “盒子”。例如:

int score;  // 聲明一個整數類型的變量score,用于存儲分數
string message;  // 聲明一個字符串類型的變量message,可存放文本信息

(二)數據類型

整型

類型名稱別名取值范圍說明示例
sbyteSystem.SByte-128 到 127有符號的 8 位整數,適用于存儲較小范圍的整數,節省內存空間sbyte smallNumber = -5;
byteSystem.Byte0 到 255無符號的 8 位整數,常用于表示無符號的小整數,如顏色分量、索引等byte redColor = 255;
shortSystem.Int16-32768 到 32767有符號的 16 位整數,比 sbyte 能表示的范圍更大,適用于一些中等范圍的整數計算short score = 1000;
ushortSystem.UInt160 到 65535無符號的 16 位整數,適用于表示無符號的中等大小整數,如一些特定的計數器ushort itemCount = 50000;
intSystem.Int32-2147483648 到 2147483647最常用的整數類型,適用于大多數整數運算場景,是默認的整數類型int age = 25;
uintSystem.UInt320 到 4294967295無符號的 32 位整數,用于表示無符號的較大整數,如文件大小(以字節為單位)等uint fileSize = 1024 * 1024;
longSystem.Int64-9223372036854775808 到 9223372036854775807有符號的 64 位整數,適用于需要表示極大范圍整數的場景,如時間戳(以毫秒為單位)long timestamp = 1672531200000;
ulongSystem.UInt640 到 18446744073709551615無符號的 64 位整數,用于表示無符號的極大整數,在處理一些超大數量級的數據時使用ulong largeNumber = 1000000000000000000;

浮點型

類型名稱別名精度說明示例
floatSystem.Single約 7 位小數單精度浮點數,占用 4 字節內存,適用于對精度要求不高,且需要節省內存空間的場景float piApprox = 3.1415927f;
doubleSystem.Double約 15 - 17 位小數雙精度浮點數,占用 8 字節內存,精度較高,適用于大多數需要精確小數計算的場景double eValue = 2.718281828459045;

非數值型

類型名稱別名允許的值說明示例
charSystem.Char一個 Unicode 字符(存儲 0 - 65535 之間的整數)用于表示單個字符,包括字母、數字、符號、漢字等char letter = 'A';?char symbol = '@';?char chineseChar = '中';
boolSystem.Booleantrue 或 false布爾類型,用于邏輯判斷,在條件語句、循環語句等中經常使用bool isLoggedIn = true;?bool isEven = (5 % 2 == 0);
stringSystem.String一組字符用于存儲文本信息,是一個字符數組的封裝,提供了豐富的字符串操作方法string greeting = "Hello, World!";?string sentence = "This is a test string.";

(三)命名約定

????????變量命名要遵循標識符命名規則,采用 Camel 命名法,即首字母小寫,后續單詞首字母大寫。這樣命名能讓代碼結構更清晰,可讀性更強。例如,用userName表示用戶名,userAge表示用戶年齡,一看就知道變量的含義。


(四)變量的賦值與初始化

變量聲明后,需要賦值才能使用。可以先聲明再賦值:

int num;
num = 10;

也可以在聲明時直接賦值

int num = 10;

????????首次給變量賦值的操作就是初始化在使用變量前必須初始化,否則會報錯,就像從空盒子里取東西,肯定是不行的。


(五)多變量聲明和賦值

一條語句可以聲明多個相同類型的變量,如:

string color1, color2, color3;

聲明時還能對部分或全部變量初始化

int num1 = 1, num2 = 2, num3;

三、字面值、轉義字符與特殊字符

(一)字面值

????????字面值用于表示文本和數字,像5"Hello"都是字面值。5是整數型字面值,"Hello"是字符串字面值。


(二)轉義字符

????????轉義字符是具有特殊功能的字符,以反斜杠\開頭。比如\'表示單引號,\"表示雙引號,\n表示換行,\t表示水平制表符。在字符串中使用轉義字符,能實現特殊格式的輸出。

string text = "He said, \"Hello!\"";  // 輸出:He said, "Hello!"
轉義序列產生的字符Unicode 值用途示例
\'單引號0x0027用于在字符串中表示單引號,如string str1 = 'It\'s a book.';
\"雙引號0x0022在字符串中包含雙引號,例如string str2 = "He said, \"Hello!\"";
\\反斜杠0x005C表示路徑時很有用,如string path = "C:\\Program Files\\Example";
\0空字符0x0000常用于表示字符串的結束(在一些特定場景),C# 中字符串本身有更明確的結束標識,但在某些與其他語言交互或底層操作時會用到
\a警告(產生蜂鳴)0x0007在控制臺應用程序中可觸發系統提示音(部分系統有效),如Console.Write("\a");?可能會讓計算機發出一聲提示音
\b退格0x0008在文本輸出中實現退格效果(刪除前一個字符位置的內容),不過在普通控制臺輸出中效果不太直觀,在一些特定文本處理場景使用
\f換頁0x000C在打印或處理文檔格式時,用于表示換頁操作,在控制臺應用中較少使用
\n換行0x000A使文本在輸出時換行,例如Console.WriteLine("第一行\n第二行");
\r回車0x000D將光標移到當前行的開頭,常與\n結合使用模擬完整的換行操作,如Console.Write("Hello\r\nWorld");
\t水平制表符0x0009在文本中插入一個水平制表位,用于對齊文本,如Console.WriteLine("Name\tAge"); Console.WriteLine("Alice\t25");
\v垂直制表符0x000B在一些文本布局中用于垂直方向的制表定位,在控制臺應用中不常用

(三)Unicode 值與轉義字符

????????Unicode 是一種字符編碼標準,每個字符都對應一個 16 進制數字可以用\u加上十六進制值來表示字符,也能表示轉義字符。例如:

string message = "I\u0027m happy.";  // 等價于 "I'm happy."

(四)@符號的作用

????????在字符串前加@符號,除雙引號外,字符串中的轉義字符將不被識別。它有兩個常見用途:一是讓字符串跨多行書寫;二是表示文件路徑時更直觀

// 正常字符串表示路徑,需要轉義反斜杠
string path1 = "c:\\program files\\example\\file.txt";
// 使用@符號,無需轉義反斜杠
string path2 = @"c:\program files\example\file.txt";// 跨多行字符串
string multiLineText = @"This is a 
multi - line
string.";

四、表達式與運算符

(一)表達式的構成

????????把變量、字面值和運算符組合起來就是表達式。運算符是對操作數進行運算的符號,根據操作數的數量,運算符分為一元運算符(處理一個操作數)、二元運算符(處理兩個操作數)和三元運算符(處理三個操作數 )


(二)數學運算符

1.基本運算:數學運算符包括+、減-、乘*、除/和取余%?。除了字符串相加和char類型可參與數學運算(char在內存中存儲的是數字),數學運算符主要用于處理數字。

int result1 = 5 + 3;  // 結果為8
int result2 = 10 % 3;  // 取余運算,結果為1

2.運算結果類型:當操作數類型一致時,結果類型與操作數相同;當操作數類型不同時,結果類型與范圍大的操作數一致,以確保結果能正確存儲。例如:

int num1 = 5;
double num2 = 3.5;
double result = num1 + num2;  // 結果為8.5,類型為double

    3.自增自減運算符++使操作數加 1,--使操作數減 1 。作為前綴(如++var?、--var?)時,先進行加 / 減 1 操作,再返回結果;作為后綴(如var++?、var--?)時,先返回結果,再進行加 / 減 1 操作。

    int num = 5;
    int result1 = ++num;  // num變為6,result1為6
    int result2 = num++;  // result2為6,num變為7
    

    (三)賦值運算符

    ????????賦值運算符用于給變量賦值。除了基本的=,還有復合賦值運算符,如+=-=*=/=%=?。

    int num = 5;
    num += 3;  // 等價于num = num + 3,num變為8
    

    (四)運算符優先級

    ????????運算符的優先級決定了表達式中運算的先后順序。例如,乘法和除法的優先級高于加法和減法。可以用括號改變優先級,括號內的運算先執行

    int result1 = 2 + 3 * 4;  // 先算乘法,結果為14
    int result2 = (2 + 3) * 4;  // 先算括號內加法,結果為20
    

    五、用戶輸入與類型轉換

    (一)獲取用戶輸入

    通過Console.ReadLine()方法可以從鍵盤讀取用戶輸入的一行字符串。例如:

    Console.Write("請輸入你的名字:");
    string name = Console.ReadLine();
    Console.WriteLine("你好," + name + "!");
    

    (二)類型轉換

    ????????從控制臺讀取的輸入默認是字符串類型,需要時要進行類型轉換。可以使用Convert類的方法,將字符串轉換為其他類型

    Console.Write("請輸入一個整數:");
    string str = Console.ReadLine();
    int num = Convert.ToInt32(str);  // 將字符串轉換為整數
    

    六、實戰練習

    1.定義商品信息變量:在Main方法中定義變量,存儲商品的名稱、價格、庫存數量等信息。

    class Program
    {static void Main(){string productName = "筆記本電腦";double price = 5999.99;int stock = 100;Console.WriteLine($"商品名稱:{productName},價格:{price}元,庫存:{stock}件");}
    }
    

    2.交換兩個浮點數變量的值:接受用戶輸入的兩個浮點數,存儲到變量中并交換它們的值。

    class Program
    {static void Main(){Console.Write("請輸入第一個浮點數:");float num1 = Convert.ToFloat(Console.ReadLine());Console.Write("請輸入第二個浮點數:");float num2 = Convert.ToFloat(Console.ReadLine());float temp = num1;num1 = num2;num2 = temp;Console.WriteLine($"交換后,第一個數為:{num1},第二個數為:{num2}");}
    }
    

    3.計算四個長整型數的乘積:編寫控制臺應用程序,要求用戶輸入 4 個long類型的值,并顯示它們的乘積。

    class Program
    {static void Main(){Console.Write("請輸入第一個長整型數:");long num1 = Convert.ToInt64(Console.ReadLine());Console.Write("請輸入第二個長整型數:");long num2 = Convert.ToInt64(Console.ReadLine());Console.Write("請輸入第三個長整型數:");long num3 = Convert.ToInt64(Console.ReadLine());Console.Write("請輸入第四個長整型數:");long num4 = Convert.ToInt64(Console.ReadLine());long product = num1 * num2 * num3 * num4;Console.WriteLine($"這四個數的乘積為:{product}");}
    }
    

    4.反轉四位整數的各位數字:從鍵盤輸入一個四位的正整數,把千位、百位、十位、個位數字的相反順序輸出。

    class Program
    {static void Main(){Console.Write("請輸入一個四位正整數:");int num = Convert.ToInt32(Console.ReadLine());int reversedNum = (num % 10) * 1000 + ((num / 10) % 10) * 100 + ((num / 100) % 10) * 10 + (num / 1000);Console.WriteLine($"反轉后的數字為:{reversedNum}");}
    }
    

    5.計算三角形面積:編寫程序,輸入三角形的底和高,計算并顯示三角形的面積。三角形面積公式為:面積 = 底 × 高 ÷2。

    class Program
    {static void Main(){Console.Write("請輸入三角形的底:");double baseLength = Convert.ToDouble(Console.ReadLine());Console.Write("請輸入三角形的高:");double height = Convert.ToDouble(Console.ReadLine());double area = baseLength * height / 2;Console.WriteLine($"三角形的面積為:{area}");}
    }
    

    6.計算橢圓的面積和周長:計算長半軸為a,短半軸為b的橢圓的面積和周長,ab由用戶輸入。橢圓面積公式為:面積 = π× 長半軸 × 短半軸;橢圓周長公式(近似)為:周長 = 2π×√((長半軸 2 + 短半軸 2)/2) 。

    class Program
    {static void Main(){Console.Write("請輸入橢圓的長半軸:");double a = Convert.ToDouble(Console.ReadLine());Console.Write("請輸入橢圓的短半軸:");double b = Convert.ToDouble(Console.ReadLine());double area = Math.PI * a * b;double perimeter = 2 * Math.PI * Math.Sqrt((a * a + b * b) / 2);Console.WriteLine($"橢圓的面積為:{area}");Console.WriteLine($"橢圓的周長為:{perimeter}");}
    }
    

    結語

    ????????變量和表達式是 C# 編程的基礎,通過不斷練習和實踐,大家能更深入地理解和掌握它們。希望今天的分享能幫助各位在 C# 編程之路上邁出堅實的一步!如果在學習過程中有任何疑問,歡迎在評論區留言交流。

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

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

    相關文章

    【深度學習神經網絡學習筆記(三)】向量化編程

    向量化編程 向量化編程前言1、向量化編程2、向量化優勢3、正向傳播和反向傳播 向量化編程 前言 向量化編程是一種利用專門的指令集或并行算法來提高數據處理效率的技術&#xff0c;尤其在科學計算、數據分析和機器學習領域中非常常見。它允許通過一次操作處理整個數組或矩陣的…

    海康威視攝像頭RTSP使用nginx推流到服務器直播教程

    思路&#xff1a; 之前2020年在本科的時候&#xff0c;由于項目的需求需要將海康威視的攝像頭使用推流服務器到網頁進行直播。這里將自己半個月琢磨出來的步驟給大家發一些。切勿轉載&#xff01;&#xff01;&#xff01;&#xff01; 使用網絡攝像頭中的rtsp協議---------通…

    鴻蒙開發深入淺出03(封裝通用LazyForEach實現懶加載)

    鴻蒙開發深入淺出03&#xff08;封裝通用LazyForEach實現懶加載&#xff09; 1、效果展示2、ets/models/BasicDataSource.ets3、ets/models/HomeData.ets4、ets/api/home.ets5、ets/pages/Home.ets6、ets/views/Home/SwiperLayout.ets7、后端代碼 1、效果展示 2、ets/models/Ba…

    【Rust中級教程】2.8. API設計原則之靈活性(flexible) Pt.4:顯式析構函數的問題及3種解決方案

    喜歡的話別忘了點贊、收藏加關注哦&#xff08;加關注即可閱讀全文&#xff09;&#xff0c;對接下來的教程有興趣的可以關注專欄。謝謝喵&#xff01;(&#xff65;ω&#xff65;) 說句題外話&#xff0c;這篇文章一共5721個字&#xff0c;是我截至目前寫的最長的一篇文章&a…

    一周學會Flask3 Python Web開發-Jinja2模板過濾器使用

    鋒哥原創的Flask3 Python Web開發 Flask3視頻教程&#xff1a; 2025版 Flask3 Python web開發 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 在Jinja2中&#xff0c;過濾器(filter)是一些可以用來修改和過濾變量值的特殊函數&#xff0c;過濾器和變量用一個豎線 | &a…

    數據庫 安裝initializing database不通過

    出現一下情況時&#xff1a; 處理方法&#xff1a; 將自己的電腦名稱 中文改成英文 即可通過

    嵌入式開發:傅里葉變換(5):STM32和Matlab聯調驗證FFT

    目錄 1. MATLAB獲取 STM32 的原始數據 2. 將數據上傳到電腦 3. MATLAB 接收數據并驗證 STM32進行傅里葉代碼 結果分析 STM32 和 MATLAB 聯調是嵌入式開發中常見的工作流程&#xff0c;通常目的是將 STM32 采集的數據或控制信號傳輸到 MATLAB 中進行實時處理、分析和可視化…

    Mobaxterm服務器常用命令(持續更新)

    切換文件夾 cd path # for example, cd /gpu03/deeplearning/進入不同GPU ssh mgmt ssh gpu01 ssh gpu03尋找文件位置 find /path -name file_name #for example, find / -name lib #在根目錄下搜尋名為lib文件 #for example, find /home/deeplearning -name "lib"…

    MFC文件和注冊表的操作

    MFC文件和注冊表的操作 日志、操作配置文件、ini、注冊表、音視頻的文件存儲 Linux下一切皆文件 C/C操作文件 const char* 與 char* const const char* 常量指針&#xff0c;表示指向的內容為常量。指針可以指向其他變量&#xff0c;但是內容不能再變了 char szName[6]&qu…

    微信小程序源碼逆向 MacOS

    前言 日常工作中經常會遇到對小程序的滲透測試&#xff0c;微信小程序的源碼是保存在用戶客戶端本地&#xff0c;在滲透的過程中我們需要提取小程序的源碼進行問題分析&#xff0c;本篇介紹如何在蘋果電腦 MacOS 系統上提取微信小程序的源碼。 0x01 微信小程序提取 在蘋果電…

    ubuntu-24.04.1-desktop 中安裝 QT6.7

    ubuntu-24.04.1-desktop 中安裝 QT6.7 1 環境準備1.1 安裝 GCC 和必要的開發包:1.2 Xshell 連接 Ubuntu2 安裝 Qt 和 Qt Creator:2.1 下載在線安裝器2.2 在虛擬機中為文件添加可執行權限2.3 配置鏡像地址運行安裝器2.4 錯誤:libxcb-xinerama.so.0: cannot open shared objec…

    告別 Freetype,擁抱高效字體處理新方案 - 純c#解析字體庫

    在當今數字化的時代&#xff0c;字體處理在眾多領域中都扮演著至關重要的角色&#xff0c;無論是平面設計、網頁開發&#xff0c;還是移動應用、游戲制作&#xff0c;合適的字體選擇與精準的處理都能極大地提升用戶體驗。而在字體處理的技術領域&#xff0c;Freetype 庫一直是開…

    React + TypeScript 復雜布局開發實戰

    React TypeScript 復雜布局開發實戰 一、項目架構設計&#xff08;基于最新技術棧&#xff09; 1.1 技術選型與工程創建 # 使用Vite 5.x React 19 TypeScript 5.4 npx create-vitelatest power-designer-ui --template react-ts cd power-designer-ui && npm inst…

    從最小依賴角度談靜態庫與動態庫的選擇及配置策略

    文章目錄 1. 前言2. 靜態庫與動態庫&#xff1a;依賴最小化的抉擇2.1 靜態庫概述2.2 動態庫概述2.3 依賴最小化角度的選擇建議 3. 運行時庫配置策略&#xff1a;/MT 與 /MD 的取舍3.1 /MT 與 /MD 的優劣比較3.2 配置選擇的建議 4. 實際案例與配置示例4.1 靜態庫示例&#xff08…

    深度學習pytorch之19種優化算法(optimizer)解析

    提示&#xff1a;有謬誤請指正 摘要 本博客詳細介紹了多種常見的深度學習優化算法&#xff0c;包括經典的LBFGS 、Rprop 、Adagrad、RMSprop 、Adadelta 、ASGD 、Adamax、Adam、AdamW、NAdam、RAdam以及SparseAdam等&#xff0c;通過對這些算法的公式和參數說明進行詳細解析…

    【深度學習神經網絡學習筆記(二)】神經網絡基礎

    神經網絡基礎 神經網絡基礎前言1、Logistic 回歸2、邏輯回歸損失函數3、梯度下降算法4、導數5、導數計算圖6、鏈式法則7、邏輯回歸的梯度下降 神經網絡基礎 前言 Logistic 回歸是一種廣泛應用于統計學和機器學習領域的廣義線性回歸模型&#xff0c;主要用于解決二分類問題。盡…

    002簡單MaterialApp主題和Scaffold腳手架

    002最簡單的MaterialApp主題和Scaffold腳手架使用導航欄_嗶哩嗶哩_bilibilihttps://www.bilibili.com/video/BV1RZ421p7BL?spm_id_from333.788.videopod.episodes&vd_source68aea1c1d33b45ca3285a52d4ef7365f&p1501.MaterialApp純凈的 /*MaterialApp 是主題,自帶方向設…

    DeepSeek開源周Day1:FlashMLA引爆AI推理性能革命!

    項目地址&#xff1a;GitHub - deepseek-ai/FlashMLA 開源日歷&#xff1a;2025-02-24起 每日9AM(北京時間)更新&#xff0c;持續五天&#xff01; ? 一、開源周震撼啟幕 繼上周預告后&#xff0c;DeepSeek于北京時間今晨9點準時開源「FlashMLA」&#xff0c;打響開源周五連…

    17.C++類型轉換

    1. C語言中的類型轉換 在C語言中&#xff0c;如果賦值運算符左右兩側類型不同&#xff0c;或者形參與實參類型不匹配&#xff0c;或者返回值類型與接收返回值類型不一致時&#xff0c;就需要發生類型轉換&#xff0c;C語言中共有兩種形式的類型轉換&#xff1a;隱式類型轉換和顯…

    springboot志同道合交友網站設計與實現(代碼+數據庫+LW)

    摘 要 現代經濟快節奏發展以及不斷完善升級的信息化技術&#xff0c;讓傳統數據信息的管理升級為軟件存儲&#xff0c;歸納&#xff0c;集中處理數據信息的管理方式。本志同道合交友網站就是在這樣的大環境下誕生&#xff0c;其可以幫助使用者在短時間內處理完畢龐大的數據信…