C# 基础入门

第二章 C# 语法基础

2-1 C# 中的关键字

关键字,是一些被C#规定了用途的重要单词。

在Visual Studio的开发环境中,关键字被标识为蓝色,下图代码中,用红方框圈出的单词就是关键字。img

关键字 class ,这个关键字的用途是声明类。比如上面例子中,类名叫做Program。

关键字 namespace ,这个关键字的用途是声明“命名空间”。比如上面例子中,命名空间叫做MyApp1。

关键字 using ,这个关键字的用途是导入命名空间。比如这句:**using** System.Text; 作用是导入System.Text命名空间中的类。

关键字 static (静态的)、 void (无返回值)、 string (字符串类型)。常常在Main()方法的声明中看到:**static** **void** Main(**string**[] args)

Main() 方法是 C# 中的特殊方法,是程序的入口,就是说,如果没有 Main ()方法,程序就无法启动。

注意:你会发现,所有关键字都是由小写字母组成的,C#语言中,大小写是严格区分的。

2-2 C#的注释

注释,是代码中的一些“说明性文字”。注释本身不会参与程序的编译和运行,仅仅供程序员阅读。

注释分为:单行注释、多行注释、文档注释。

单行注释的符号是2条斜线(请注意斜线的方向),2条斜线右侧的内容就是注释,左侧的代码不会受影响。

多行注释以“/”开始,以“/”结束,之间的内容就是注释,可以包含多行。

文档注释写在类、方法或属性(以后会学到)的前面,它的符号是3条斜线“///”。

img

2-3 C#常量

常量,顾名思义,就是“不会改变的量”。

我们平时书写的数字(比如12.85)、字符(比如’F’)、字符串(比如"谢谢"),它们都属于“字面常量”。

有一些常量既重要又容易出错,比如圆周率π的值为3.1415926…,所以,我们常常会使用自定义常量。请看下面的代码:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

需要解释2个关键字: const 关键字,表明PI是一个常量; double 关键字,表明PI的类型为“双精度浮点型”(一种精度很高的数字类型)。

你会发现,这段代码中使用了2次圆周率(周长、面积),但是因为使用自定义常量,所以字面常量3.1415926只书写了一次。这样做避免了重复书写导致的错误。

还有一点要特别注意:常量在声明时赋值,之后是不能修改的

2-4 C# 的变量

变量能够存储数据,并且与常量不同,变量存储的数据可以修改。比如今年18岁,明年可以变成19岁。

使用变量分为3步:声明、赋值、使用

声明变量的语法:**数据类型 变量名;**

给变量赋值的语法:**变量名=值;**

请阅读下面的代码:

img变量的声明和赋值可以同时完成,上面代码Main()方法中的前两行可以改写为:

int age=18;//声明并赋值

2-7 算法----交换

上次我们学习了变量。这次我们将了解,怎样将2个变量的值交换
交换2个变量的值,就如同交换两只杯子中的饮料:一杯满满的牛奶和一杯满满的咖啡,怎样才能互换呢?

img

变量的交换也如此。两个变量的交换也需要一只“空杯子”,就是中间变量

tring a="振刚";//第一个变量
string b="文峰";//第二个变量
string temp;//中间变量
//第一步:将变量a赋值给中间变量
temp=a;//如同牛奶倒入空杯
//第二步:将变量b赋值给变量a
a=b;//如同咖啡倒入牛奶杯
//第三步:将中间变量赋值给变量b
b=temp;//如同空杯中的牛奶倒入咖啡杯
//此时交换完成,变量a存储了“文峰”,b存储了“振刚”

上面三个步骤就能交换2个变量,你学会了吗?
这种解决实际问题的步骤就叫做“算法”交换就是最常用的一种算法。

C# 2-9 C# 的数据类型

我们知道声明变量需要写出数据类型,我们今天要学习的是最常用的几种类型。
字符类型 char ,存储用 ‘’ (单引号)括起来的一个字符,例如:

char sex='男';//存储性别

字符串类型 string ,存储用“”(双引号)括起来的一串字符,例如:

string address="北京市宣武区牛街北口";//存储地址

整数类型 int ,存储整数,例如:

int age=23;//存储年龄

双精度浮点型 double ,存储小数,例如:

double salary=7991.63;//存储工资

以上四种是最常用的数据类型,其他常用类型,我们会随着课程深入慢慢介绍。

需要注意的是,某种类型的变量,只能存储这种类型的数据,否则,可能会出错。

2-10 C# C# 的类型转换

上一节我们学习了4种数据类型,也提到每种类型的变量只能存这种类型的数据。可是,有时候真的需要把不同类型的值放在一起运算,比如这种:3.5+8 这时候怎么办呢?有下面2种情况:

自动类型转换:2种不同类型的数据运算,低精度类型会自动转换为较高精度的类型。
以3.5+8为例,显然数字8的精度较低(int),而3.5的精度较高(double),所以,8会自动转换为double型,即转换为3.5+8.0进行运算,结果为11.5。

请看这个例子:**double** d=2; 2的精度显然低于变量d的精度,所以2会自动转换为2.0然后赋值给d。
再看这个例子:**int** i=3.0;变量i的精度低于3.0,但是由于i已经声明为int型的变量,变量的值可以变,但变量的类型可不能变来变去的,所以这条命令会出错的。

强制类型转换:无法自动转换为我们需要的类型,可以用强制类型转换,比如上例可以这样完成:

int i=(int)3.0;

数字前面的(int)表示转换的目标类型为int,3.0会被强制转换为3。
需要注意, double 型强制转换为int型将失去小数部分,比如(int)2.8,我们得到的将是2。

2-11 C#标识符的命名规则

程序中的变量名、常量名、类名、方法名,都叫做标识符。C#有一套标识符的命名规则,如果命名时不遵守规则,就会出错。这套规则简单说有下面三条:

①标识符只能由英文字母、数字和下划线组成,不能包含空格和其他字符。

错误的标识符声明:**string** $user; //错在使用了其他字符

②变量名不能用数字开头。

错误的标识符声明:**double** 6h;//错在用数字开头

③不能用关键字当变量名。

错误的标识符声明:**char** static ;//错在用关键字**static**做变量名

2-13 C#的算术运算符(一)

计算机程序,当然少不了“计算”,要计算就必须了解运算符。今天,我们先学习算术运算符中的加、减、乘、除。

加:+ 。加号有2个用途:当用加号连接两个数字时,会计算出这两个数字的和。比如:

Console.WriteLine(9+2.2);//输出11.2

另一种情况,当加号两边包含字符串的时候,会把两边的表达式连接成新的字符串。比如:

Console.WriteLine(9+"2.2");//输出92.2,因为"2.2"是字符串,所以9也被转换为"9",+起的作用是连接字符串

减:- 。减号的作用就是减法。比如:

Console.WriteLine(15-23);//输出-8

乘:* 。乘号的作用是求2数的乘积。比如:

Console.WriteLine(0.8*3);//输出2.4

除:/ 。除号的作用是求2数相除的商。比如:

Console.WriteLine(2/0.5);//输出4.0

但是,2个整数相除,结果仅保留整数部分,小数部分会被舍去。

Console.WriteLine(5/10);//输出0

2-14 C#的算术运算符(二)

这一节我们学习取余运算符

C#中的取余运算符就是**%。上一节学习的除号,作用是求2个数字相除的商,而取余运算符%的作用是求两个数字相除的余数**。比如:

Console.WriteLine(19/5);//求19除以5的商,输出3
Console.WriteLine(19%5);//求19除以5的余数,输出4(商3余4)

编程中,%常常用来检查一个数字是否能被另一个数字整除。比如下面的代码片段:

int number = 29;
Console.WriteLine(number%2);//求number除以2的余数

如果输出0,表示没有余数,即number能够被2整除(是偶数);如果输出1,表示有余数,即number不能被2整除(是奇数)。

2-15 C#的算术运算符(三)

这一节学习两个特别的运算符**++–**。

++,叫做自加运算符。比如你今年18岁,明年长了一岁,用代码写出来是这样:

int age=18;//今年18岁
age=age+1;//明年,在今年的年龄上加1岁

也可以写成这样:

int age=18;//今年18岁
age++;//明年,在今年的年龄上加1岁

age++;age=age+1;作用相同,都是变量的值+1

–,叫做自减运算符。同理,你今年18岁,用了XX护肤水以后,明年变成17岁了,可以这样写:

int age=18;//今年18岁
age--;//等同于 age=age-1;

另外,age++;age--;也可以写作++age;--age;

但请注意:如果与其他运算在同一语句中,++写在变量前面或后面,算法不一样,请看下例:

Console.WriteLine(age++);作用等同于下面两句:

Console.WriteLine(age);//先打印
age=age+1;//后自加

Console.WriteLine(++age);作用等同于下面两句:

age=age+1;//先自加
Console.WriteLine(age);//后打印

你看,运算顺序不一样吧,所以输出的结果也不会相同。

2-17 C#的比较运算符

比较数字大小,或者比较数字相等的运算符是比较运算符。C#中的比较运算符有:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注意:表示两个值相等的“等于”是由2个“=”组成的。

比较运算的结果,都是布尔类型( bool ),bool类型我们是第一次提到,它表示逻辑上的真(成立)假(不成立)。真与假用关键字 true 和 false 表示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上面程序中, x>=y 不成立会返回 false , x<=y 成立,会返回 true 。运行结果:

2-18 C#的逻辑运算符(一)

逻辑运算符用来连接多个 bool 类型表达式,实现多个条件的复合判断。C#中的逻辑运算符包括:逻辑非( ! )、逻辑与( && )、逻辑或( || )

逻辑非用来对某一个 bool 类型表达式取反,即“真变假”或“假变真”。请看下面的代码:

Console.WriteLine(1 > 0);//条件表达式为true,输出True
Console.WriteLine(!(1 > 0));//用逻辑非对条件表达式取反,输出False

逻辑与用来判断 2 个 bool 类型表达式是否同时为 true 。请看下面的代码:

int x = 5, y = 2;//同时声明2个int型变量并赋值
Console.WriteLine(x>3 && y>3);//判断x>3和y>3是否同时为true,由于y>3为false,所以整个表达式为false

只有当&&两边的表达式均为 true 时,整个表达式才为 true ;若任意一个表达式为 false ,整个表达式即为 false 。

逻辑或用来判断2个 bool 类型表达式中是否有一个为 true 。请看下面的代码:

int x = 5, y = 2;//同时声明2个int型变量并赋值
Console.WriteLine(x>3 || y>3);//判断x>3和y>3是否有一个为true,由于x>3为true,所以整个表达式为true

只要||两边的表达式有一个为 true ,整个表达式即为 true ;若两边的表达式均为 false ,整个表达式为 false 。

对比一下,就是说: && 运算符,两边同真才算真,一边为假就算假; || 运算符,一边为真即为真,两边同假才是假。

C#的逻辑运算符(二)

作为对上一节学习的巩固,这一节我们通过几个示例熟悉逻辑运算符的应用。第一个示例是关于逻辑与,比如小张想结婚,未来丈母娘开出的条件是:存款必须过10万,必须有房子,这两条少一条都不行。既然2个条件都是“必须”做到,那就需要同时满足,适合用逻辑与连接:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

运行结果为:False

下一个示例是关于逻辑或,比如丽丽选择男朋友的标准,要么是“工程师”,要么是“运动员”,二者居其一即可:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

运行结果为:True

2-21 C#的赋值运算符

前面,我们已经学过一个赋值运算符“=”,这次我们学习一下其他的赋值运算符:

加****赋值“+=”:先加后赋值。请看下面的例子:

int x=5;
x += 2;//这句等同于x=x+2;执行后,x的值为7

减****赋值“-=”:先减后赋值。请看下面的例子:

int x=5;
x -= 2;//这句等同于x=x-2;执行后,x的值为3

乘****赋值“*=”:先乘后赋值。请看下面的例子:

int x=5;
x *= 2;//这句等同于x=x*2;执行后,x的值为10

除****赋值“/=”:先除后赋值。请看下面的例子:

int x=5;
x /= 2;//这句等同于x=x/2;执行后,x的值为2

取余赋值“%=”:先取余后赋值。请看下面的例子:

int x=5;
x %= 2;//这句等同于x=x%2;执行后,x的值为1

与其他运算符从左向右计算不同,赋值运算符从右向左计算。

2-22 C#的运算符优先级

前面我们学习了那么多运算符,如果编程中同时使用了多个运算符,到底哪一个会先运算呢?这就是优先级的问题。C#运算符的优先级请参考下面的顺序:

括号。学数学的时候我们就知道,要先计算括号里面的内容。C#语言也是一样,如果有多层括号,要从里向外计算。括号优先级最高。

一元运算符。有些运算符两边有2个操作数,比如2+3、6%5等等,这些叫做二元运算符。只有一个操作数的叫做一元运算符,它们的优先级高于二元运算符。一元运算符包括:++(自加) 、 --(自减) 、 !(逻辑非)

③***(乘)、/(除)、%(取余)**。

④**+(加)、-(减)**。

⑤**>(大于)、<(小于)、>=(大于等于)、<=(小于等于)**。

⑥**==(等于)、!=(不等于)**。

⑦**&&(逻辑与)**。

⑧**||(逻辑或)**。

赋值运算符。包括:=、+=、-=、*=、/=、%=。

另外,还需要注意一点:优先级相同的运算符从左向右计算(赋值运算符相反)

请看下面这段代码:

bool b = 20 - (15 - 8) * 2 > 10 && (2 % 2 * 2 + 2) > 2;
Console.WriteLine(b);

分析:首先计算优先级最高的括号,(15-8)得到7,(2%22+2)则需要先计算%和,后算+,结果是2,表达式就变成了:

bool b=20-7*2>10&&2>2;

接下来优先级最高的是7*2,然后是减法,变成:

bool b=6>10&&2>2;

继续计算两个大于号,得到:

bool b=false&&false;

第3章 条件结构

3-1 C#用流程图描述程序逻辑

流程图是程序步骤的图形化表示方法。流程图中包括如下符号:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

以上图形中,流程线用来连接相邻的两个步骤;每一个程序都有且仅有一个开始结束

以下流程图描述的是,求2个浮点数的和,后边是用C#实现:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3-2 C#中判断和分支

走到岔路口,需要选择方向。编写程序也会遇到判断和分支。请看下面的流程图,判断手机账户余额是否不足10元,如果不足给出提示:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个程序在“balance<10”这个步骤出现了分支,“balance<10”被称为判断( bool 类型),当判断为 true 时,执行左边的分支,输出提示;当判断为 false 时,执行右边的分支,不输出任何内容。

在C#中,这个结构成为条件结构,通常用 if 关键字来实现:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

if 右边的判断为 true 的时候,会执行分支一;如果判断为 false ,则不会执行分支一

3-3 C#中if…else条件结构

前一节我们学习了 if 条件结构。条件结构可以有2个分支,比如下面的流程图,判断一个整数是奇数还是偶数:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个流程图从C#实现如下,其中,条件为 true 时执行的分支写在 if() 后面的{}中;条件为 false 时执行的分支写在 else 后面的{}中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个由 ifelse 组成的结构是条件结构的一种,它的基本逻辑是:当条件为 true 时,执行分支1,否则,执行分支2。这段程序中,变量num能够被2整除时会执行分支1,不能被2整除时执行分支2。程序的运行结果是:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

每一个 if…else 结构都包含 1 个条件和 2 个分支,而程序会根据条件的真与假,选择执行其中的某一个分支。条件必须为 bool 类型的表达式。

3-5 C#中嵌套的if结构

程序开发中,往往需要先判断一个条件是否成立,再判断另一个条件。比如下面的例子:验证账号是否为“admin”,如果不是则提示错误;如果是,则验证密码是否为“bj2022”:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

用C#实现如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外层的**if** (userName == "admin") 会被首先判断,如果为 false ,就会输出“用户名错误!”;如果为 true ,再判断内层的**if** (password == "bj2022")

3-6 C#中多重if结构

如果,有多个条件,其中只有一个成立,应该怎样判断呢?比如小明考试,90分以上奖励一台手机,80-89分奖励一个滑板,60-79分奖励一个烧饼,60以下没有奖励,0-100的分数被划分为4档,需要做3次条件判断。如果用上一节学习的嵌套if结构完成,3层if的嵌套会使程序变得很复杂。本节我们使用多重 if 结构实现,它的基本语法为:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

程序运行时,将从上到下依次判断条件,若某个条件为 true ,则执行对应的分支,并且停止后面条件的判断。比如下面的代码,将输出“奖励一个烧饼”:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3-7 C#中else与if的匹配

if…else 条件结构中,如果某个分支只包含一条命令,那么是可以省略大括号{}的。比如上一节的练习,可以简化为:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

请注意,如果分支中包含2条以上的命令,是不能省略{}的。

如果 ifelse 比较多,又省略了{},怎么判断那一个 if 和哪一个 else 是一对呢?请看下面的代码:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当出现多个 ifelse ,又没有{}来界定范围时,请参考下面2条原则:

每一个 else 与前面离它最近的 if 配对。按照这个原则,上面示例代码的两个 else 都与第二个 if 配对,这显然是不可能的,于是又有了第二个原则。

多个 else 都与同一个 if 相近时,最内层的 else 优先配对。这样,第一个 else 处于内层,就与第二个 if 优先配对,第二个 else 只能与第一个 if 配对。上面的示例代码会输出“C”。

根据这两个原则,上面的代码等同于如下的规范代码:外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

编写条件结构时,尽可能加上 {} 可以省掉不必要的错误和麻烦。

3-9 C#的条件运算符

C#提供了一种条件运算符,能够代替简单的 if…else 结构。这种条件运算符的语法如下:

条件表达式 ? 分支1 : 分支2

?: 就是条件运算符,可以看到它有3个操作数,所以又被称为三元运算符。它的运算逻辑是:当条件表达式为 true 时,执行分支1;当条件表达式为 false 时,执行分支2。

下面的例子中,根据年龄的大小,输出“成年人”或“未成年人”:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因为age=17,所以条件表达式age>=18的值为 false ,返回“未成年人”。

3-10 C#的switch结构

if…else 之外,C#中还有一种 switch 条件结构,可以用来对变量进行多个分支的等值判断。语法如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(变量)与每一个 case 后面的常量进行等值比较,如果相等,就执行对应的分支。执行分支以后, break 关键字会使 switch 结构中止,不会再判断后面的常量。如果变量与所有的常量都不相同,则执行 default 后面的分支。

下面的代码,根据运算符完成了四则运算中的一项:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上面的代码,因为变量oper的值与 case ‘*’ 匹配,所以会输出乘积“18”。

switch 中的(变量)只能是3种类型:整型(如 int )、字符型( char )、字符串类型( string )。

”或“未成年人”:

[外链图片转存中…(img-SC0XbfIe-1705239736445)]

因为age=17,所以条件表达式age>=18的值为 false ,返回“未成年人”。

3-10 C#的switch结构

if…else 之外,C#中还有一种 switch 条件结构,可以用来对变量进行多个分支的等值判断。语法如下:

[外链图片转存中…(img-6axm5Fdw-1705239736445)]

(变量)与每一个 case 后面的常量进行等值比较,如果相等,就执行对应的分支。执行分支以后, break 关键字会使 switch 结构中止,不会再判断后面的常量。如果变量与所有的常量都不相同,则执行 default 后面的分支。

下面的代码,根据运算符完成了四则运算中的一项:

[外链图片转存中…(img-F3snY4hE-1705239736446)]

上面的代码,因为变量oper的值与 case ‘*’ 匹配,所以会输出乘积“18”。

switch 中的(变量)只能是3种类型:整型(如 int )、字符型( char )、字符串类型( string )。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/622403.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux下编写zlg7290驱动(1)

大家好&#xff0c;今天给大家介绍Linux下编写zlg7290驱动(1)&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 在智能仪表中&#xff0c;经常会用到键盘、数码管等外设。因此&…

【Java语言基础②】Java基本语法——Java程序基本格式,注释,标识符,常量

通过前面的学习&#xff0c;大家对Java语言有了一个基础认识&#xff0c;但现在还无法使用Java语言编写程序&#xff0c;要熟练使用Java语言编写程序&#xff0c;必须充分掌握Java语言的基础知识。今天咱们就来聊一聊Java的基本语法。 1.java程序的基本格式 Java程序代码必须…

Spring Boot 3 + Vue 3实战:引入数据库实现用户登录功能

文章目录 一、实战概述二、实战步骤&#xff08;一&#xff09;创建数据库&#xff08;二&#xff09;创建用户表&#xff08;三&#xff09;后端项目引入数据库1、添加相关依赖2、用户实体类保持不变3、编写应用配置文件4、创建用户映射器接口5、创建用户服务类6、修改登录控制…

NLP论文阅读记录 - 2021 | WOS 使用深度强化学习及其他技术进行自动文本摘要

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作2.1. Seq2seq 模型2.2.强化学习和序列生成2.3.自动文本摘要 三.本文方法四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果4.6 细粒度分析 五 总结思考 前言 Auto…

Java:常见算法

认识算法 什么是算法&#xff1f; 解决某个实际问题的过程和方法 学习算法的技巧 先搞清楚算法的流程直接去推敲如何写代码 排序算法 冒泡排序 每次从数组中找出最大值放在数组的后面去。 实现冒泡排序的关键步骤分析 确认总共需要做几轮&#xff1a;数组的长度-1每轮比较…

【java】创建打印数组的方法并调用

java的数组和Python不一样&#xff0c;不能直接用print打印&#xff0c;而如果每次都用循环的方法&#xff0c;比较麻烦&#xff0c;就直接创建一个类&方法&#xff0c;每次用的时候直接调用。 public class list_deal {public static void printArray(int[] arr){for (in…

Python实现对角但非同一性协方差结构回归模型(WLS算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 WLS回归分析是一种常用的回归分析方法&#xff0c;通过对数据进行加权处理&#xff0c;可以更准确地评…

VSCode编写 C/C++ 程序

VSCode 全称 Visual Studio Code&#xff0c;是微软出的一款轻量级代码编辑器&#xff0c;免费、开源而且功能强大。它支持几乎所有主流的程序语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、GIT 等特性&#xff0c;支持插件扩展&#xff0c;并…

Day02

今日任务&#xff1a; 977 有序数组的平方209 长度最小的子数组59 螺旋矩阵Ⅱ 977 有序数组的平方 题目链接&#xff1a;https://leetcode.cn/problems/squares-of-a-sorted-array/ 双指针问题&#xff0c;以及数组本身时有序的&#xff1b; 思路&#xff1a; 左、右两个…

SG-8101CGA 系列 (晶体振荡器 可编程 可用 +125°C )

SG-8101CGA是可编程晶体振荡器&#xff0c;具有CMOS输出&#xff0c;适用于汽车&#xff0c;同时&#xff0c;该系列还提供相同的频率和其他参数的轻松编程能力&#xff0c;符合AEC-Q100标准&#xff0c;具有出色的电磁兼容性和稳定性&#xff0c;可以在各种环境下使用。外部尺…

Linux的DHCP工作原理和dns服务器

目录 一、DHCP原理 1.DHCP的好处 2.DHCP的分配方式 3.实验 二、dns服务器 1.什么是dns 2.dns域名解析 3、在内网搭建dns 一、DHCP原理 DCHP工作原理使用C/S架构 &#xff08;1&#xff09;第一步&#xff0c;客户端广播发送一个discover报文寻找DHCP服务器。 &#…

牛客周赛 Round 28 解题报告 | 珂学家 | 组合数学 + 离散化树状数组

前言 整体评价 还是E稍微有点意思&#xff0c;新周赛好像比预期要简单一些, _. 欢迎关注 珂朵莉 牛客周赛专栏 珂朵莉 牛客小白月赛专栏 A. 小红的新周赛 思路: 模拟 #include <bits/stdc.h>using namespace std;int main() {int res 0;for (int i 0; i < 6; i…

x86是什么?

x86是一系列CPU架构的统称&#xff0c;这一术语起源于1978年&#xff0c;当时Intel发布了其首款16位微处理器——8086。这款处理器在当时引起了极大的关注&#xff0c;因为它首次引入了许多先进的技术&#xff0c;如寄存器间接寻址和分段内存管理等。随后&#xff0c;Intel又相…

Linux:/proc/kmsg 与 /proc/sys/kernel/printk_xxx

目录 前言一、/proc/kmsg1、简介2、如何修改内核日志缓冲区3、dmesgklogctl 函数&#xff08;来源于 man 手册&#xff09; 4、扩展阅读 二、 /proc/sys/kernel/printk_xxx三、/dev/kmsg 前言 本篇文章将为大家介绍与 Linux 内核日志相关的一些控制文件&#xff0c;共同学习&am…

UE5 PCG插件场景静态网格模块化、快速搭建场景

PCG图表可以理解为静态网格体图表&#xff0c;里面可以自定义放不同有静态网格体、可以对密度、大小、面积等等在场景实际应中做相应的调整&#xff0c;可以根据地形高度随机生成静态网络体&#xff0c;可以模化作业。大大降低了场景制的时间成本。PCG插件目前需要UE5.2以上的版…

Multimodal Prototypical Networks for Few-shot Learning

tcGAN is provided with an embedding ϕ T \phi_T ϕT​() of the textual description 辅助信息 作者未提供代码

【ArcGIS Pro微课1000例】0056:度分秒与十进制度互相转换(度分秒→度、度→度分秒)

ArcGIS软件可以很方便的直接实现度分秒转度、度转度分秒(度分秒→度、度→度分秒)。 文章目录 一、转换预览二、工具介绍三、案例解析一、转换预览 借助ArcGIS快速实现度分秒与度及其他格式的坐标转换,例如:度分秒→度、度→度分秒。 1. 度→度分秒 2. 度分秒→度 转换后…

【遇见Transformer】Transformer代码、原理全方位解析,相信我,看这一篇就够了!

目录 前言 预备知识 本章代码环境 关注我&#xff0c;不迷路 &#xff01; Transformer模型的结构​编辑 Transformer模型的基本原理 注意力机制 自注意力机制 两者的区别 多头注意力机制 Transformer模型的训练 Transformer模型的应用 论文地址 前言 预备知识 在…

Multi-View-Information-Bottleneck

encoder p θ ( z 1 ∣ v 1 ) _θ(z_1|v_1) θ​(z1​∣v1​)&#xff0c;D S K L _{SKL} SKL​ represents the symmetrized KL divergence. I ˆ ξ ( z 1 ; z 2 ) \^I_ξ(z_1; z_2) Iˆξ​(z1​;z2​) refers to the sample-based parametric mutual information estimatio…