C# 最基础知识介绍(三)——变量、常量、运算符、判断、循环

C# 最基础知识介绍(三)——变量、常量、运算符、判断、循环

C#变量🎈
程序运行期间,可以被改变的量
本质:变量是一个存储空间,被改变的是存储的内容
注意:变量一定要先定义再使用

一个变量只不过是一个供程序操作的存储区的名字。在 C# 中,每个变量都有一个特定的类型,类型决定了变量的内存大小和布局。范围内的值可以存储在内存中,可以对变量进行一系列操作。
C# 中提供的基本的值类型大致可以分为以下几类:

 

 

 


 

C# 中的变量定义
变量定义的语法格式:

1 <data_type> <variable_list>;

类型修饰符 变量名 = 初始值

例如:int age = 23;

类型修饰符:规定了变量的空间大小,以及变量的数据类型
变量名:变量的名字,起标识作用
初始值:变量定义时的默认值

变量命名的规则

  1. 只能由字母、数字、下划线或@组成,并且不能以数字开头,@只能用在开头 _hello_World34
  2. 不可以与系统关键字同名
  3. 不能使用重复的变量名(C#大小写敏感)
  4. 要使用驼峰命名方法 int helloWorld hello_world
  5. 见名知意(规范)Int age = 15;

 

C# 中的 Lvalues 和 Rvalues
C# 中的两种表达式:

  • lvalue:lvalue 表达式可以出现在赋值语句的左边或右边。
  • rvalue:rvalue 表达式可以出现在赋值语句的右边,不能出现在赋值语句的左边。

变量是 lvalue 的,所以可以出现在赋值语句的左边。数值是 rvalue 的,因此不能被赋值,不能出现在赋值语句的左边。下面是一个有效的语句:

1 int g = 20;

下面是一个无效的语句,会产生编译时错误:

1 10 = 20;

常量🎉

常量:程序运行期间,不能被改变的量
常量是固定值,程序执行期间不会改变。常量可以是任何基本数据类型,比如整数常量、浮点常量、字符常量或者字符串常量,还有枚举常量。

常量可以被当作常规的变量,只是它们的值在定义后不能被修改。


 

整数常量
整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,没有前缀则表示十进制。

整数常量也可以有后缀,可以是 U 和 L 的组合,其中,U 和 L 分别表示 unsigned 和 long。后缀可以是大写或者小写,多个后缀以任意顺序进行组合。

这里有一些整数常量的实例:

1 212         /* 合法 */
2 215u        /* 合法 */
3 0xFeeL      /* 合法 */
4 078         /* 非法:8 不是一个八进制数字 */
5 032UU       /* 非法:不能重复后缀 */

以下是各种类型的整数常量的实例:

1 85         /* 十进制 */
2 0213       /* 八进制 */
3 0x4b       /* 十六进制 */
4 30         /* int */
5 30u        /* 无符号 int */
6 30l        /* long */
7 30ul

 

浮点常量

一个浮点常量是由整数部分、小数点、小数部分和指数部分组成。您可以使用小数形式或者指数形式来表示浮点常量。

这里有一些浮点常量的实例:

1 3.14159       /* 合法 */
2 314159E-5L    /* 合法 */
3 510E          /* 非法:不完全指数 */
4 210f          /* 非法:没有小数或指数 */
5 .e55          /* 非法:缺少整数或小数 */

使用小数形式表示时,必须包含小数点、指数或同时包含两者。使用指数形式表示时,必须包含整数部分、小数部分或同时包含两者。有符号的指数是用 e 或 E 表示的。


 

字符常量
字符常量是括在单引号里,例如,‘x’,且可存储在一个简单的字符类型变量中。一个字符常量可以是一个普通字符(例如 ‘x’)、一个转义序列(例如 ‘\t’)或者一个通用字符(例如 ‘\u02C0’)。

在 C# 中有一些特定的字符,当它们的前面带有反斜杠时有特殊的意义,可用于表示换行符(\n)或制表符 tab(\t)。在这里,列出一些转义序列码:

 

 

 

以下是一些转义序列字符的实例:

复制代码
 1 namespace EscapeChar
 2 {
 3     class Program
 4     {
 5         static void Main(string[] args)
 6         {
 7             Console.WriteLine("Hello\tWorld\n\n");
 8             Console.ReadLine();
 9         }
10     }
11 }
复制代码

当上面的代码被编译和执行时,它会产生下列结果:

Hello World

字符串常量

字符串常量是括在双引号 “” 里,或者是括在== @""== 里。字符串常量包含的字符与字符常量相似,可以是:普通字符、转义序列和通用字符

使用字符串常量时,可以把一个很长的行拆成多个行,可以使用空格分隔各个部分。

这里是一些字符串常量的实例。下面所列的各种形式表示相同的字符串。

复制代码
 1 string a = "hello, world";                  // hello, world
 2 string b = @"hello, world";               // hello, world
 3 string c = "hello \t world";               // hello     world
 4 string d = @"hello \t world";               // hello \t world
 5 string e = "Joe said \"Hello\" to me";      // Joe said "Hello" to me
 6 string f = @"Joe said ""Hello"" to me";   // Joe said "Hello" to me
 7 string g = "\\\\server\\share\\file.txt";   // \\server\share\file.txt
 8 string h = @"\\server\share\file.txt";      // \\server\share\file.txt
 9 string i = "one\r\ntwo\r\nthree";
10 string j = @"one
11 two
12 three";
复制代码

定义常量

常量是使用 const 关键字来定义的 。定义一个常量的语法如下:

1 const <data_type> <constant_name> = value;

下面的代码演示了如何在程序中定义和使用常量:

实例

复制代码
 1 using System;
 2 
 3 public class ConstTest
 4 {
 5     class SampleClass
 6     {
 7         public int x;
 8         public int y;
 9         public const int c1 = 5;
10         public const int c2 = c1 + 5;
11 
12         public SampleClass(int p1, int p2)
13         {
14             x = p1;
15             y = p2;
16         }
17     }
18 
19     static void Main()
20     {
21         SampleClass mC = new SampleClass(11, 22);
22         Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y);
23         Console.WriteLine("c1 = {0}, c2 = {1}",
24                           SampleClass.c1, SampleClass.c2);
25     }
26 }
复制代码

当上面的代码被编译和执行时,它会产生下列结果:

x = 11, y = 22 c1 = 5, c2 = 10

C# 运算符🎃

运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C# 有丰富的内置运算符,分类如下:

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
  • 其他运算符

算术运算符
下表显示了 C# 支持的所有算术运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:

 

 

  • c = a++: 先将 a 赋值给 c,再对 a 进行自增运算。
  • c = ++a: 先将 a 进行自增运算,再将 a 赋值给 c 。
  • c= a–: 先将 a 赋值给 c,再对 a 进行自减运算。
  • c = --a: 先将 a 进行自减运算,再将 a 赋值给 c 。
复制代码
 1 实例
 2 using System;
 3 
 4 namespace OperatorsAppl
 5 {
 6     class Program
 7     {
 8         static void Main(string[] args)
 9         {
10             int a = 1;
11             int b;
12 
13             // a++ 先赋值再进行自增运算
14             b = a++;
15             Console.WriteLine("a = {0}", a);
16             Console.WriteLine("b = {0}", b);
17             Console.ReadLine();
18 
19             // ++a 先进行自增运算再赋值
20             a = 1; // 重新初始化 a
21             b = ++a;
22             Console.WriteLine("a = {0}", a);
23             Console.WriteLine("b = {0}", b);
24             Console.ReadLine();
25 
26             // a-- 先赋值再进行自减运算
27             a = 1;  // 重新初始化 a
28             b= a--;
29             Console.WriteLine("a = {0}", a);
30             Console.WriteLine("b = {0}", b);
31             Console.ReadLine();
32 
33             // --a 先进行自减运算再赋值
34             a = 1;  // 重新初始化 a
35             b= --a;
36             Console.WriteLine("a = {0}", a);
37             Console.WriteLine("b = {0}", b);
38             Console.ReadLine();
39         }
40     }
41 }
复制代码

执行以上程序,输出结果为:

a = 2
b = 1
a = 2
b = 2
a = 0
b = 1
a = 0
b = 0

 

关系运算符

下表显示了 C# 支持的所有关系运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:

 

 

实例

请看下面的实例,了解 C# 中所有可用的关系运算符:

复制代码
 1 实例
 2 using System;
 3 
 4 class Program
 5 {
 6   static void Main(string[] args)
 7   {
 8       int a = 21;
 9       int b = 10;
10      
11       if (a == b)
12       {
13           Console.WriteLine("Line 1 - a 等于 b");
14       }
15       else
16       {
17           Console.WriteLine("Line 1 - a 不等于 b");
18       }
19       if (a < b)
20       {
21           Console.WriteLine("Line 2 - a 小于 b");
22       }
23       else
24       {
25           Console.WriteLine("Line 2 - a 不小于 b");
26       }
27       if (a > b)
28       {
29           Console.WriteLine("Line 3 - a 大于 b");
30       }
31       else
32       {
33           Console.WriteLine("Line 3 - a 不大于 b");
34       }
35       /* 改变 a 和 b 的值 */
36       a = 5;
37       b = 20;
38       if (a <= b)
39       {
40          Console.WriteLine("Line 4 - a 小于或等于 b");
41       }
42       if (b >= a)
43       {
44          Console.WriteLine("Line 5 - b 大于或等于 a");
45       }
46   }
47 }
复制代码

当上面的代码被编译和执行时,它会产生下列结果:

Line 1 - a 不等于 b
Line 2 - a 不小于 b
Line 3 - a 大于 b
Line 4 - a 小于或等于 b
Line 5 - b 大于或等于 a

逻辑运算符

下表显示了 C# 支持的所有逻辑运算符。假设变量 A 为布尔值 true,变量 B 为布尔值 false,则:

 

 

请看下面的实例,了解 C# 中所有可用的逻辑运算符:

实例

复制代码
 1 using System;
 2 
 3 namespace OperatorsAppl
 4 {
 5     class Program
 6     {
 7         static void Main(string[] args)
 8         {
 9             bool a = true;
10             bool b = true;
11            
12             if (a && b)
13             {
14                Console.WriteLine("Line 1 - 条件为真");
15             }
16             if (a || b)
17             {
18                 Console.WriteLine("Line 2 - 条件为真");
19             }
20             /* 改变 a 和 b 的值 */
21             a = false;
22             b = true;
23             if (a && b)
24             {
25                 Console.WriteLine("Line 3 - 条件为真");
26             }
27             else
28             {
29                 Console.WriteLine("Line 3 - 条件不为真");
30             }
31             if (!(a && b))
32             {
33                 Console.WriteLine("Line 4 - 条件为真");
34             }
35             Console.ReadLine();
36         }
37     }
38 }
复制代码

 

当上面的代码被编译和执行时,它会产生下列结果:

Line 1 - 条件为真
Line 2 - 条件为真
Line 3 - 条件不为真
Line 4 - 条件为真

位运算符

位运算符作用于位,并逐位执行操作。&、 | 和 ^ 的真值表如下所示:

 

 

假设如果 A = 60,且 B = 13,现在以二进制格式表示,它们如下所示:

A = 0011 1100

B = 0000 1101


 

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A = 1100 0011

下表列出了 C# 支持的位运算符。假设变量 A 的值为 60,变量 B 的值为 13,则:

 

 

请看下面的实例,了解 C# 中所有可用的位运算符:

复制代码
 1 using System;
 2 namespace OperatorsAppl
 3 {
 4     class Program
 5     {
 6         static void Main(string[] args)
 7         {
 8             int a = 60;            /* 60 = 0011 1100 */  
 9             int b = 13;            /* 13 = 0000 1101 */
10             int c = 0;          
11 
12              c = a & b;           /* 12 = 0000 1100 */
13              Console.WriteLine("Line 1 - c 的值是 {0}", c );
14 
15              c = a | b;           /* 61 = 0011 1101 */
16              Console.WriteLine("Line 2 - c 的值是 {0}", c);
17 
18              c = a ^ b;           /* 49 = 0011 0001 */
19              Console.WriteLine("Line 3 - c 的值是 {0}", c);
20 
21              c = ~a;               /*-61 = 1100 0011 */
22              Console.WriteLine("Line 4 - c 的值是 {0}", c);
23 
24              c = a << 2;     /* 240 = 1111 0000 */
25              Console.WriteLine("Line 5 - c 的值是 {0}", c);
26 
27              c = a >> 2;     /* 15 = 0000 1111 */
28              Console.WriteLine("Line 6 - c 的值是 {0}", c);
29             Console.ReadLine();
30         }
31     }
32 }
复制代码

当上面的代码被编译和执行时,它会产生下列结果:

Line 1 - c 的值是 12
Line 2 - c 的值是 61
Line 3 - c 的值是 49
Line 4 - c 的值是-61
Line 5 - c 的值是 240
Line 6 - c 的值是 15

 

赋值运算符

下表列出了 C# 支持的赋值运算符:

 

 

请看下面的实例,了解 C# 中所有可用的赋值运算符:

复制代码
 1 using System;
 2 
 3 namespace OperatorsAppl
 4 {
 5     class Program
 6     {
 7         static void Main(string[] args)
 8         {
 9             int a = 21;
10             int c;
11 
12             c = a;
13             Console.WriteLine("Line 1 - =  c 的值 = {0}", c);
14 
15             c += a;
16             Console.WriteLine("Line 2 - += c 的值 = {0}", c);
17 
18             c -= a;
19             Console.WriteLine("Line 3 - -=  c 的值 = {0}", c);
20 
21             c *= a;
22             Console.WriteLine("Line 4 - *=  c 的值 = {0}", c);
23 
24             c /= a;
25             Console.WriteLine("Line 5 - /=  c 的值 = {0}", c);
26 
27             c = 200;
28             c %= a;
29             Console.WriteLine("Line 6 - %=  c 的值 = {0}", c);
30 
31             c <<= 2;
32             Console.WriteLine("Line 7 - <<=  c 的值 = {0}", c);
33 
34             c >>= 2;
35             Console.WriteLine("Line 8 - >>=  c 的值 = {0}", c);
36 
37             c &= 2;
38             Console.WriteLine("Line 9 - &=  c 的值 = {0}", c);
39 
40             c ^= 2;
41             Console.WriteLine("Line 10 - ^=  c 的值 = {0}", c);
42 
43             c |= 2;
44             Console.WriteLine("Line 11 - |=  c 的值 = {0}", c);
45             Console.ReadLine();
46         }
47     }
48 }
复制代码

当上面的代码被编译和执行时,它会产生下列结果:

复制代码
Line 1 - = c 的值 = 21
Line 2 - += c 的值 = 42
Line 3 - -= c 的值 = 21
Line 4 - *= c 的值 = 441
Line 5 - /= c 的值 = 21
Line 6 - %= c 的值 = 11
Line 7 - <<= c 的值 = 44
Line 8 - >>= c 的值 = 11
Line 9 -&= c 的值 = 2
Line 10 - ^= c 的值 = 0
Line 11 - |= c 的值 = 2
复制代码

其他运算符

下表列出了 C# 支持的其他一些重要的运算符,包括 sizeof、typeof 和 ? :。

 

 

实例

复制代码
 1 using System;
 2 
 3 namespace OperatorsAppl
 4 {
 5    
 6    class Program
 7    {
 8       static void Main(string[] args)
 9       {
10          
11          /* sizeof 运算符的实例 */
12          Console.WriteLine("int 的大小是 {0}", sizeof(int));
13          Console.WriteLine("short 的大小是 {0}", sizeof(short));
14          Console.WriteLine("double 的大小是 {0}", sizeof(double));
15          
16          /* 三元运算符的实例 */
17          int a, b;
18          a = 10;
19          b = (a == 1) ? 20 : 30;
20          Console.WriteLine("b 的值是 {0}", b);
21 
22          b = (a == 10) ? 20 : 30;
23          Console.WriteLine("b 的值是 {0}", b);
24          Console.ReadLine();
25       }
26    }
27 }
复制代码

当上面的代码被编译和执行时,它会产生下列结果:

int 的大小是 4
short 的大小是 2
double 的大小是 8
b 的值是 30 b 的值是 20

C# 中的运算符优先级👻

运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。

例如 x = 7 + 3 * 2,在这里,x 被赋值为 13,而不是 20,因为运算符 * 具有比 + 更高的优先级,所以首先计算乘法 3*2,然后再加上 7。

下表将按运算符优先级从高到低列出各个运算符,具有较高优先级的运算符出现在表格的上面,具有较低优先级的运算符出现在表格的下面。在表达式中,较高优先级的运算符会优先被计算。

 

 

实例

复制代码
 1 using System;
 2 
 3 namespace OperatorsAppl
 4 {
 5    
 6    class Program
 7    {
 8       static void Main(string[] args)
 9       {
10          int a = 20;
11          int b = 10;
12          int c = 15;
13          int d = 5;
14          int e;
15          e = (a + b) * c / d;     // ( 30 * 15 ) / 5
16          Console.WriteLine("(a + b) * c / d 的值是 {0}", e);
17 
18          e = ((a + b) * c) / d;   // (30 * 15 ) / 5
19          Console.WriteLine("((a + b) * c) / d 的值是 {0}", e);
20 
21          e = (a + b) * (c / d);   // (30) * (15/5)
22          Console.WriteLine("(a + b) * (c / d) 的值是 {0}", e);
23 
24          e = a + (b * c) / d;    //  20 + (150/5)
25          Console.WriteLine("a + (b * c) / d 的值是 {0}", e);
26          Console.ReadLine();
27       }
28    }
29 }
复制代码

当上面的代码被编译和执行时,它会产生下列结果:

(a + b) * c / d 的值是 90
((a + b) * c) / d 的值是 90
(a + b) * (c / d) 的值是
90 a + (b * c) / d 的值是 50

C# 判断⛄️

判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。

下面是大多数编程语言中典型的判断结构的一般形式:

 

 

 


 


判断语句
C# 提供了以下类型的判断语句。

 

 

 


 

? : 运算符
我们已经在前面的章节中讲解了 条件运算符 ? :,可以用来替代 if…else 语句。它的一般形式如下:

1 Exp1 ? Exp2 : Exp3;

其中,Exp1、Exp2 和 Exp3 是表达式。请注意,冒号的使用和位置。

? 表达式的值是由 Exp1 决定的。如果 Exp1 为真,则计算 Exp2 的值,结果即为整个 ? 表达式的值。如果 Exp1 为假,则计算 Exp3 的值,结果即为整个 ? 表达式的值。


 

C# 循环🔔
有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。
编程语言提供了允许更为复杂的执行路径的多种控制结构。
循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的一般形式:

 

 

 


 


循环类型
C# 提供了以下几种循环类型。

 

 


 

循环控制语句
循环控制语句更改执行的正常序列。当执行离开一个范围时,所有在该范围中创建的自动对象都会被销毁。
C# 提供了下列的控制语句。

 

 


无限循环

如果条件永远不为假,则循环将变成无限循环。for 循环在传统意义上可用于实现无限循环。由于构成循环的三个表达式中任何一个都不是必需的,您可以将某些条件表达式留空来构成一个无限循环。

 

复制代码
 1 实例
 2 using System;
 3 
 4 namespace Loops
 5 {
 6    
 7     class Program
 8     {
 9         static void Main(string[] args)
10         {
11             for (; ; )
12             {
13                 Console.WriteLine("Hey! I am Trapped");
14             }
15  
16         }
17     }
18 }
复制代码

当条件表达式不存在时,它被假设为真。您也可以设置一个初始值和增量表达式,但是一般情况下,程序员偏向于使用 for(;😉 结构来表示一个无限循环。


 

1.从键盘输入一个三位的正整数,按数字的相反顺序输出

方法一

复制代码
1             int b;
2             b = Convert.ToInt32(Console.ReadLine());
3             int x;
4             int y;
5             int z;
6             x = b % 10;
7             y = b /10  %10;
8             z = b / 100;
9             Console.WriteLine(100*x+10*y+z);
复制代码

方法一

1  string z = "";
2 Console.WriteLine("输入一个正整数");
3 string str = Console.ReadLine();
4 for (int i = 0; i < str.Length; i++)
5  {
6  z = z + str[str.Length - i - 1];    //利用字符串的长度-i,还要减1,因为从0开始
7 // Console.WriteLine(count);                                          //Console.WriteLine(str[str.Length-i-1]); }
8 Console.WriteLine(z);

2.任意输入两个数,计算它们的和差积商

复制代码
 1 int a, b,c,d,e,f;
 2             Console.WriteLine("请输入两个数:");
 3             a = Convert.ToInt32(Console.ReadLine());
 4             b = Convert.ToInt32(Console.ReadLine());
 5             c = a + b;
 6             d = a - b;
 7             e = a * b;
 8             f = a / b;
 9             Console.WriteLine("这两个数的和为" + c + "\n这两个数的差为" + d + "\n这两个数的积为" + e + "\n这两个数的商为" + f);
10             Console.ReadKey();
复制代码

3.交换两个int类型变量的值

1             int j, k;
2             Console.WriteLine("请输入两个数j和k");
3             j = Convert.ToInt32(Console.ReadLine());
4             k = Convert.ToInt32(Console.ReadLine());
5             j = j + k;
6             k = j - k;
7             j = j - k;
8             Console.WriteLine("j的值为"+j+"\nk的值为"+k);

 

posted @   KRLKING  阅读(823)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示