一、为什么使用变量
计算机程序本质上是对数据的操作,数字、文字、图片等在计算机中都属于数据。而变量,就是数据在计算机内存中的 “栖息地”。我们可以把变量想象成一个个小盒子,这些盒子能存放各种数据,需要时还能随时取出。
二、变量的声明与使用
(一)声明变量
声明变量需要明确指定类型和变量名,基本格式为<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) 。
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# 编程之路上迈出坚实的一步!如果在学习过程中有任何疑问,欢迎在评论区留言交流。