一、為什么使用變量
????????計算機程序本質上是對數據的操作,數字、文字、圖片等在計算機中都屬于數據。而變量,就是數據在計算機內存中的 “棲息地”。我們可以把變量想象成一個個小盒子,這些盒子能存放各種數據,需要時還能隨時取出。
二、變量的聲明與使用
(一)聲明變量
????????聲明變量需要明確指定類型和變量名,基本格式為<type> <name>;
?。這里的type
代表變量的數據類型,就像是不同規格的盒子,決定了能裝什么數據;name
則是變量的名字,方便我們在程序中找到對應的 “盒子”。例如:
int score; // 聲明一個整數類型的變量score,用于存儲分數
string message; // 聲明一個字符串類型的變量message,可存放文本信息
(二)數據類型
整型
類型名稱 | 別名 | 取值范圍 | 說明 | 示例 |
---|---|---|---|---|
sbyte | System.SByte | -128 到 127 | 有符號的 8 位整數,適用于存儲較小范圍的整數,節省內存空間 | sbyte smallNumber = -5; |
byte | System.Byte | 0 到 255 | 無符號的 8 位整數,常用于表示無符號的小整數,如顏色分量、索引等 | byte redColor = 255; |
short | System.Int16 | -32768 到 32767 | 有符號的 16 位整數,比 sbyte 能表示的范圍更大,適用于一些中等范圍的整數計算 | short score = 1000; |
ushort | System.UInt16 | 0 到 65535 | 無符號的 16 位整數,適用于表示無符號的中等大小整數,如一些特定的計數器 | ushort itemCount = 50000; |
int | System.Int32 | -2147483648 到 2147483647 | 最常用的整數類型,適用于大多數整數運算場景,是默認的整數類型 | int age = 25; |
uint | System.UInt32 | 0 到 4294967295 | 無符號的 32 位整數,用于表示無符號的較大整數,如文件大小(以字節為單位)等 | uint fileSize = 1024 * 1024; |
long | System.Int64 | -9223372036854775808 到 9223372036854775807 | 有符號的 64 位整數,適用于需要表示極大范圍整數的場景,如時間戳(以毫秒為單位) | long timestamp = 1672531200000; |
ulong | System.UInt64 | 0 到 18446744073709551615 | 無符號的 64 位整數,用于表示無符號的極大整數,在處理一些超大數量級的數據時使用 | ulong largeNumber = 1000000000000000000; |
浮點型
類型名稱 | 別名 | 精度 | 說明 | 示例 |
---|---|---|---|---|
float | System.Single | 約 7 位小數 | 單精度浮點數,占用 4 字節內存,適用于對精度要求不高,且需要節省內存空間的場景 | float piApprox = 3.1415927f; |
double | System.Double | 約 15 - 17 位小數 | 雙精度浮點數,占用 8 字節內存,精度較高,適用于大多數需要精確小數計算的場景 | double eValue = 2.718281828459045; |
非數值型
類型名稱 | 別名 | 允許的值 | 說明 | 示例 |
---|---|---|---|---|
char | System.Char | 一個 Unicode 字符(存儲 0 - 65535 之間的整數) | 用于表示單個字符,包括字母、數字、符號、漢字等 | char letter = 'A'; ?char symbol = '@'; ?char chineseChar = '中'; |
bool | System.Boolean | true 或 false | 布爾類型,用于邏輯判斷,在條件語句、循環語句等中經常使用 | bool isLoggedIn = true; ?bool isEven = (5 % 2 == 0); |
string | System.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
的橢圓的面積和周長,a
和b
由用戶輸入。橢圓面積公式為:面積 = π× 長半軸 × 短半軸;橢圓周長公式(近似)為:周長 = 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# 編程之路上邁出堅實的一步!如果在學習過程中有任何疑問,歡迎在評論區留言交流。