你好, 欢迎｡
让我们继续讨论数据类型, 并讨论更多内容｡
在这节课中, 我们将讨论枚举数据类型和字符关注数据类型｡
因此, 敌人项目是一种数据类型, 它允许程序员定义一个变量, 并指定可以存储到该变量中的有效值｡
所以枚举是非常强大的｡
它实际上指定了一个数据类型｡
它是关键字enum, 但基本上您可以拥有自己的数据类型, 只包含某些值｡
例如, 你可以创建一个名为my color的变量, 如果它是一个特定的枚举类型,
你可以设置它, 使它只包含或只能被赋值给原色, 如红色､ 黄色或蓝色,
然后不能再给它赋值｡
编译器会给予你一个错误｡
它有点像一种数据类型, 你可以指定, 也可以创建,
但你必须定义数据类型, 然后你必须创建这种类型的变量.
所以枚举是关键字｡
所以如果你想使用这个枚举数据类型, 你要做的第一件事就是你必须定义这个枚举类型, 并给予它一个名字,
只是一个标识符, 就像变量名一样｡
具体的做法是使用enum关键字, 然后在enum关键字之后提供一个名称, 比如标识符.
然后在标识符之后, 你要把所有有效值的列表放在大括号里｡
你基本上是说这个枚举只能是这些值｡
然后当你以后想使用枚举的时候, 你声明你创建了一个枚举类型的变量｡
让我们来看看它的实际效果｡
在这里, 我定义了一个名为primary color的枚举类型｡
我有enum关键字, 然后我有我的enum的名字, 它是原色,
然后我定义了这个类型的所有值｡
你会看到它们被括在花括号里, 左花括号和右花括号｡
在本例中, 我们有一个名为Primary Color的枚举类型, 它只能保存红色､ 黄色和蓝色的值｡
它不能存储其他任何东西, 如果你试图为原色赋值, 或者如果你试图使用原色数据类型,
并试图为其他东西赋值, 它将不起作用｡
这就是我们对它的定义｡
我们首先必须定义枚举, 然后必须再次使用它｡
定义只是说这是它是什么｡
所以我们在这里看到的是白色的原色｡
它可以是红色､ 黄色和蓝色｡
因此, 声明为基色类型的变量只能被赋值为红色､ 黄色和蓝色｡
在程序内部, 其他值都不起作用｡
所以, 第一步是定义它｡
第二步是使用它｡
定义好之后, 我们就可以用声明的方式, 声明一个这种类型的变量｡
现在的变量是我们仍然使用的enum关键字｡
然后, 我们实际上拥有了在定义枚举时指定的枚举的名称｡
在最后, 我们用一个变量列表跟在后面｡
这里有一个例子, 我们有enum, 我们使用enum关键字, 我们有我们要使用的enum的名称,
它是我们刚刚创建的名为Primary Color的枚举｡
然后我们就有名字了｡
所以这里我们有两个敌人的类型原色｡
我的颜色和格雷格的颜色一样｡
所以, 这也是我们使用枚举的地方｡
我们已经定义了枚举可以是什么, 只是红色､ 黄色或蓝色｡
现在我们有两个变量, 分别是my color和gray color, 它们只能包含这三个值中的一个,
不能包含其他任何值｡
这里我们声明了一个变量, 一个基色｡
同样, 这也定义了两个变量, 我的颜色和格雷的颜色, 都是原色类型｡
这是一种枚举类型, 是可以赋给这些变量的唯一允许值｡
这两个变量分别是红色､ 黄色和蓝色｡
所以我们可以说我的颜色等于红色｡
这是完全正确的｡
我们不能说我的颜色等于绿色｡
这是行不通的, 因为这些值对于该枚举类型无效｡
我们不能说我的颜色等于Jason, 因为我的颜色只能包含三个主颜色枚举类型的值｡
这是一种非常强大的数据类型, 因为您实际上是在定义自己的数据类型, 这些数据类型只能包含特定的值｡
另一个例子是, 如果我们创建一个month类型的枚举, 这里我们说month只能等于January, February, March, April, May,
June, July, August.
10月11月12月｡
这就是定义｡
这就是我们所说的有效值是什么｡
如果我们要使用month, 我们会创建一个名为Enum Month的变量, 然后随便你给它取什么名字｡
然后我们可以给这个名字指定任何一个有效的月份, 从一月到十二月｡
这就是如何使用枚举｡
现在, 在C语言中, 收入是如何实现的, 是否真的用数字来表示？
因此, 编译器实际上将枚举标识符视为整数常量｡
所以你定义的列表中的第一个名字, 如果你试图打印出这个值, 它会是零｡
所有这一切都是在说, 他们是如何定义的？
如果要显示输出, 实际值是什么？
这意味着, 如果我们有一个月份, 这个月, 我们创建了一个枚举月份类型的变量,
然后我们说这个月等于二月｡
这个月实际上等于一个整数｡
但我们仍然可以比较它, 并用它来与二月进行比较｡
但是如果您要将这个月打印到控制台, 则这个月实际上是一个整数值, 对应于它在列表中定义的时间｡
所以在这种情况下, 二月是一个｡
因为这个月枚举列表中的第二个是二月｡
对不对？
所以如果我们回到过去, 如果你还记得我们定义它的时候, 第二个是二月｡
你应该注意到这是一个, 尽管它是第二个｡
因为这意味着列表的开头是零｡
所以一月是零, 二月是一, 三月是二, 以此类推｡
这一点很重要, 因为你可以将它与实际值进行比较, 比如二月｡
现在, 如果您想要一个与枚举标识符相关联的特定整数值,
您可以使用赋值运算符显式地赋值｡
当您实际定义类型时｡
比如说, 这里, 如果我们定义了一个新的枚举类型direction, 我们说direction的有效值是up,
down, left, right,
你会看到第三个值left实际上有一个等于, 表示left等于10｡
因此在本例中, 我们的枚举类型方向是用值up､ down､ left和right定义的｡
这些是您可以指定的唯一有效值｡
这种类型的变量up将等于零因为它是列表定义中的第一个元素.
因为它是第二个元素, 所以1等于down.
同样, 它从零开始｡
十等于左｡
它不会等于2, 因为我们明确地指定它等于10｡
所以左是10, 因为这是我们定义的｡
然后right会等于11因为它会是紧接着它的下一个, 它是下一个.
所以如果我们有另一个值, 那就是12｡
因此, 如果需要, 可以显式赋值｡
但同样重要的是, 当你做比较或者打印出数值时,
你只需要知道基因组在系统中实际上是用整数来表示的｡
但是你仍然可以使用February, March, January, 当你在枚举中签名的时候,
当你把这些值和另一个值进行比较的时候, 你可以使用January, February, March, 它仍然允许你使用那些漂亮的名字｡
所以我们会有一个关于敌人的小任务或挑战, 这样你们就可以更熟悉它了｡
但这里的重点是如何创建枚举类型？
那么, 如何创建这种类型的变量并赋值呢？
再说一次, 这很好, 因为你可以控制分配的内容｡
如果你不想指定方向, 你知道, 右角, 你只需要定义上, 下, 左, 右｡
我想讨论的另一个重要的数据类型是CHA或care, 这取决于您如何发音｡
我们主要讨论了数字数据类型｡
我们现在讨论枚举｡
Char表示单个字符, 例如字母L a｡
数字字符六或分号｡
你在这里看到的是单引号｡
我们之所以知道它们的特征, 是因为, 即使1是一个数字, 也是用单引号引起来的.
因此, 程序中单引号内的任何内容都称为字符数据类型｡
通常, 这些字符是字母数字字符, 如ABCD､
FG, 但它们也可以是键盘上的实际数字或其他字符｡
您还可以将字符变量声明为无符号｡
无符号只是意味着它们不能被否定｡
所以这并没有什么意义｡
但是它告诉编译器, 当你有一个无符号字符时, 它只是一个正数,
因为记住, 字符也可以用ASCII表中的数字来表示｡
我们一会儿再谈这个｡
但是我们会谈到你也不想把字符数据类型与字符串混淆｡
字符数据类型只是单引号内的单个字符｡
我们还有另外一节课要讲弦｡
这将是一个字符序列, 一个字符数｡
因此, 不要将character或char与character､ string或string混淆｡
如果要声明一个字符并使用它, 只需指定数据类型（char或care）, 然后指定标识符｡
在这个例子中, 我们用炭火烤｡
它声明了一个名为broiled的char类型的变量｡
当我们赋值给那个变量时, 我们把它｡
我们将值放在单引号内｡
所以烧烤等于t是完全可以的｡
如果我们试图说boiled等于tea, 而tea不在引号内, 那是不对的, 因为tea是一个变量｡
除非RT也是char类型, 否则这是无效的｡
这里我们有皇家等号双引号｡
同样, 这是无效的, 因为双引号和C表示它是一个字符串, 我们会详细讨论, 但这是无效的｡
所以如果你省略了这些单引号, 编译器会认为T是变量名, 这样就不起作用了｡
如果你用双引号, 它会认为你用的是字符串｡
正如我提到的, 你也可以使用数字代码来为字符赋值, 它只使用ASCII表｡
所以ASCII表就是字符在计算机中被表示为数字的方式｡
这是一整张桌子
基本上, 如果你给一个字符类型赋值, 它会认为你是在给ASCII赋值.
所以它要做的是, 给65打分｡
它会在ASCII表中查找65, 它会是这个字符的等价物.
你必须在ASCII表中查找那个字符是什么｡
但是, 你知道, 我知道B就像48｡
这也是计算机用数字表示某些字符的方式｡
所以你不能把数字赋给字符, 它们只会被转换成单个字符, 基于它们在ASCII表中的位置｡
转义字符｡
这是一个专门的术语, 你会听到, 基本上它是一个特殊的字符,
代表一个动作和C编程语言｡
例如, 您可以使用代表退格的特殊字符, 或代表新行的特殊字符｡
或代表终端铃声的特殊字符｡
你可以用一个很难用的符号来表示这些动作, 比如用单引号括起来的字符｡
我会给予你们一些例子｡
这些也称为转义序列｡
这些是代表动作的特殊字符｡
所以转义序列在赋值给字符变量时也要用单引号括起来｡
您经常会在字符串中看到这些转义序列来表示一个操作｡
例如, 这里我们有一个字符x等于单引号反斜杠n｡
你会注意到很多转义字符都是以反斜杠开头的｡
但是反斜杠结尾是一个字符, 看起来有点奇怪｡
它在程序中代表的是一个新行｡
所以如果你想把这个字符打印出来, 它实际上不会打印出反斜杠n, 它会打印出一个新行｡
您将看到一条新线｡
打印出来｡
所以字符X将代表这个字符｡
如果你要打印变量x, 它只会前进到下一行｡
还有很多不同的转义序列｡
这是一个很好的小表格, 我从一本海洋入门书中拿来的, 它代表了所有你可以用来代表动作的转义字符｡
所以我们提到了反斜杠｡
这是一个新的系列｡
反斜线｡
R是回车｡
反斜杠V是垂直制表符｡
反斜杠T我认为是一个水平制表符｡
让我给予你一些例子, 同时也给你一些在我们的代码块编辑器中使用枚举的例子｡
所以我们在这里有我们熟悉的程序, 有我们的主方法和一个枚举｡
同样, 枚举很好, 因为你可以, 你可以决定给它赋什么值｡
但有两个步骤｡
创建枚举时, 必须定义类型, 然后必须创建该类型的变量｡
并且对两者都使用enum关键字｡
所以如果我想创建一个新的类型枚举, 我想命名一个, 让这个枚举等于一些值, 例如,
我可以创建一个类型的枚举, 比如说｡
枚举类型的性别, 我们看到枚举性别｡
然后我们要做的就是用背面, 弯曲的支架｡
不要与方括号和曲括号混淆｡
然后我们定义了性别可以是的价值清单｡
基本上, 它可以是一个男性, 然后我们用逗号分隔它, 然后是一个女性, 然后我们用分号结束它｡
这说明我们有一种新的类型叫做性别｡
这是一个类型枚举｡
而唯一可以赋给这种类型变量的值就是男性和女性｡
如果我们想使用这个枚举, 我们可以创建一个新变量｡
我们只需要说出enum类型的名称gender｡
然后我们就可以说我的性别｡
对不对？
这就是我们声明变量的方式｡
我们声明变量my gender, 但是我们还没有分配或初始化任何值｡
我们能赋予它的唯一值是男性或女性｡
所以我们可以说我的性别等于男性, 这是有效的｡
如果我们去编译｡
这样就可以了｡
没有错误｡
如果我们想赋值其他的东西, 比如说我们想给它赋值一个字符串,
我们试着给一个数字赋值｡
现在, 如果我们试着建造这个｡
你会看到它构建得很好, 没有错误, 因为它是一个int｡
但如果我们试着把它放在字符串或其他东西里会更有价值｡
赋值时会显示不兼容的类型｡
所以这里有个错误｡
很难看出来｡
但基本上, 我们不允许在这里给它赋值｡
因为这不是正确的44型｡
你只能签男性或女性｡
然后, 如果我们试着用整数来表示, 我们可以输入, 我们可以说是男性｡
然后我们可以将它与其他变量进行比较, 这样我们就可以创建另一个性别的枚举性别类型｡
在这里, 您总是希望使用良好的命名约定｡
确保我们拼写正确｡
这时候我们可以说女性上帝然后我们可以说创建一个布尔值来看｡
判断正误可以说bool是雄性的我们可以说它等于雄性等于雌性｡
对不起, 不是男等于女, 而是我的性别等于｡
另一个性别, 这实际上会返回false, 因为我的性别不等于另一个性别｡
我的性别等于男, 另一个性别等于不及格女对不起, 是男就设为假值或零值｡
我们也可以通过打印敌人的价值观来看到他们｡
我们会注意到, 如果我们打印出枚举的值, 我们还没学过如何打印变量, 但是我们可以做一些类似于打印f的事情,
我们会注意到, 我的性别, 实际上等于零,
因为它是列表中的第一个｡
另一个性别将等于一｡
所以这是相当不错的｡
我还想在我们的例子中讲一点字符｡
我们可以用变量名创建字符和单个字符｡
我们只使用char类型, 然后我们说Char, 我的字符, 我们可以用单引号括起来等于任何东西｡
它可以是j, f, 我们甚至可以用变量来表示, 表中的ASCII数字｡
但它的好处是你可以给它指定转义字符, 代表特定的操作, 比如反斜杠n｡
如果我们要用这个或者打印出来, 它会打印一个新的换行符,
这样我们就可以打印f, 我们可以说打印F, 我们必须做一些像百分比C的事情, 我们会在下一节课上讲,
然后打印出我的角色｡
这实际上会在屏幕上显示一个新行, 只是一个换行符｡
所以如果我们要建造这个｡
我们应该去做｡
我们实际上看到的输出只是新的一行｡
所以你可以在上面看到｡
这里有一条新的线｡
所以这是一个具体的行动｡
您没有打印任何输出｡
但我们会再举一些例子｡
我在这里要演示的是枚举, 字符, 转义序列, 转义字符的概念.
学习这些东西的一个很好的方法是在ID中玩类型代码, 看看它做了什么｡
但为了补充这一点, 我将提供一些挑战, 也有助于您的评估｡
希望这对你有帮助｡
-谢谢—谢谢