>> [音乐播放]
演讲嘉宾：好的。
所以，让我们来谈谈另一个 事情的那种独特的为C，
这是数据类型和变量。
当我说唯一的C，我真的 仅意味着在的范围内，
如果你是一个程序员 对于很长一段时间，
你可能不 数据类型工作
如果你使用的现代 编程语言。
现代语言，如 PHP和JavaScript，
由此我们也可以看到一个小 后来在使用过程中，
你实际上并不需要指定 变量的数据类型
当您使用它。
>> 你只需要声明它，并开始使用它。
如果它是一个整数，它 知道这是一个整数。
如果它是一个字符，它的 知道这是一个字符。
如果是的话，它知道 这是一个字符串，所谓的。
>> 但在C，这是一个 较老的语言，我们需要
指定数据 每一个变量的类型
我们创建的第一次 我们使用该变量。
所以C带有一些 内置的数据类型。
而让我们一起来熟悉 与一些人的。
再后来，我们还会聊 一些数据类型的点点
我们已经为你写的， 这样你就可以使用他们在CS50。
>> 第一个是int型。
int数据类型用于变量 将存储整数值。
所以1，2，3，负1，2，3，依此类推。
整数，这是一件好事，你 应该牢记的测验，
总是占用四个字节 的存储器，它是32位。
有八位字节。
>> 因此，这意味着，该范围 珍视的整数可以存储
是由什么能适合在有限 32位价值的信息。
现在事实证明， 这是早就决定
我们会分手 的32位，它的范围
进入负整数 和正整数，
每个得到的范围的一半。
因此，我们代表值的范围 一个整数的范围从负2
到第31的功率为2，以 第31次幂减1，
因为你还需要0点。
>> 所以基本上有一半的可能值 你可以在一个int适合为负，
一半是积极的。
而大致在这里，这是负面 2十亿到积极的2十亿。
给予或采取几百万元。
所以这是你能适应什么 在一个整型变量。
现在，我们也有一些东西 所谓的无符号整数。
现在无符号整数不是 独立类型的变量。
相反，无符号是 什么叫做预选赛。
它会修改数据 整数类型咯。
>> 在这种情况下，什么无符号 是指：你也可以
使用无符号其它数据类型， 整数是不是唯一的一个。
什么是有效的作用是双打 值的正的范围内
该整数可以取 不再允许牺牲
你采取负值。
所以，如果你有，你知道号码 将获得高于2十亿，但少
超过4十亿，对于example-- 这是2的32次power--
你可能想使用 一个unsigned int，如果你
知道你的价值永远不会是负数。
>> 你会偶尔有 用于无符号变量
在CS50，这就是为什么我提到在这里。
但值的再次的范围内，您 可以用一个无符号整数表示
因为到t常规整数，0 到2的32次幂减1，
或约0-4十亿。
所以，你已经有效地一倍 正范围，你能适应，
但你已经放弃了所有的 负值。
>> 现在，顺便说一句，无符号 不是唯一限定符
我们可能会看到 变量数据类型。
也有事情称为 短期和长期和常量。
常量，我们会看到一个小 位以后的课程。
短期和长期，我们可能不会。
>> 但是，仅仅知道有 其他的预选赛。
无符号是不是唯一的一个。
但它是唯一一个我们 要谈论现在。
因此，所有的权利。
因此，我们已经介绍了整数。
下一步是什么？
>> 字符数。
所以字符被用于变量 将存储单个字符。
字符是短期​​的角色。
有时你可能会听到 人的发音方式是汽车。
>> 所以人物总是占据一个 内存字节，这仅仅是8位。
因此，这意味着它们可以仅适合 在负2的范围内的值
第七电源，或负128， 到2到第7幂减1，或127。
>> 由于ASCII码，这是 早就决定的方式
映射这些正数从 0到127之间各种人物
我们的键盘上都存在。
所以，我们会看到后来在 的过程中，你可能会
会记住一些 点，大写字母A，为example--
人物资本A-- 映射到数65。
而其中的原因是 因为那是什么它是
被分配的ASCII标准。
>> 小写A为97。
因为当你的人物0 实际键入的字符，而不是
表示有多少个零，是48。
您将了解一对夫妇 这些，当您去。
你一定会到了需要 他们在CS50有点晚。
>> 下一个重要的数据类型 是浮点数。
所以浮点数是 也被称为实数。
他们基本上号码是 在他们的小数点。
浮点值 喜欢整数，也
包含在4个字节的存储器。
现在，这里没有图。
有没有一些行，因为 描述一个浮动范围
不完全是透明的或直观。
>> 我只想说你 具有32位的工作。
如果你有一个数字 如pi，其中有
一个整数部分3，和一个浮动 点部分，或小数部分0.14159，
等等，你需要 能够代表所有的它 - 中
整数部分和小数部分。
>> 那么，你认为这可能意味着什么？
一件事是，如果小数 部分变长，
如果我有一个非常大的 整数部分，我可能不
能够一样精确 同的小数部分。
这是真正的 一个浮动的限制。
>> 花车有精度问题。
我们只有32位 一起工作，所以我们只能
如此精确，我们的小数部分。
我们可以不一定有小数 部分精确到100或200位，
因为我们只有 32位一起工作。
所以这是一个浮动的限制。
>> 现在，幸运的是有 所谓另一种数据类型
双，这在一定程度 这个问题处理。
双打，像浮筒，还用于 存储实数，或浮点
值。
所不同的是 双打双精度。
他们能够适应64位 数据，或八个字节。
这意味着什么？
嗯，这意味着我们可以有很多更 精确的小数点。
而不必丕七 可能的地方，有一个浮动，
我们也许可以把它以30个名额。
如果这很重要，你可能希望 使用而不是一个float双。
基本上，如果你是 工作在任何的地方
有一个很长的小数位 和大量的精度是重要的，
你可能想 使用双overfloat。
现在对于大多数工作在 CS50，花车应该足够了。
但确实知道，双打存在，作为一个 方式有所与精度处理
给你一个额外的32问题 位与您的数字工作。
>> 现在，这是不是一种数据类型。
这是一种类型。
而这就是所谓的无效。
我说的这件事 这里，是因为我们已经大概
见过几次已经在CS50。
你可能会疑惑 它的全部。
>> 所以空隙是一种类型。
它确实存在。
但它不是一个数据类型。
>> 我们无法创建类型的变量 无效和值分配给它。
但功能，例如， 可以有一个void返回类型。
基本上，如果你看到一个函数 具有void返回类型，
这意味着它不会返回一个值。
你能想到的共同 功能我们已经沿用至今
在CS50，它没有返回值？
>> printf的就是其中之一。
的printf实际上并不 返回任何东西给你。
它打印一些东西到 屏幕上，它基本上
什么printf的确实的副作用。
但它不给你回的值。
你不捕捉的结果和存储 它在某些变量稍后使用。
它只是打印的东西 屏幕，你就大功告成了。
>> 所以我们说的printf 是一个无效的功能。
它没有返回值。
>> 的周长名单 功能也可以是无效的。
而且你也已经看到， 在CS50相当多了。
诠释主作废。
这是否有印象？
基本上，这是什么意思的是， 主要不带任何参数。
有没有说法， 获得进入主。
现在，将来，我们将看到有 一种方式来传递参数到主，
但到目前为止，我们已经 看到的是INT主要无效。
主要就是不带任何参数。
因此，我们指定说无效。
我们只是被极 明确的事实
它不带任何参数。
>> 所以，就目前而言，这足以说明 说是基本无效
应该只是作为一个占位符 为你想的什么。
它不是真正在做什么。
这里有没有返回值。
这里有没有参数。
这是无效的。
这是比这更复杂一点。
但是，这应该足够了 更好的一部分课程。
并希望现在你有一点点 位更多的是概念，什么是无效的。
>> 因此，这些都是五类，你会 被内置到C相遇
但在CS50，我们也有一个图书馆。
CS50.h，它可以包含。
而这将为您 具有两个附加类型的
那你可能可以 在您的分配使用，
或者只是一般的工作编程。
>> 其中第一项是布尔。
所以布尔数据类型， 布尔，用于变量
将存储一个布尔值。
如果你曾经听说过 这个词之前，你
可能知道布尔 值能够只
持两种不同的不同的值。
真假。
现在这个看起来很 基本的，对不对？
这是怎样的一个惊喜，这对 在C中不存在，因为它是内置。
在许多现代语言， 当然，布尔
是一个标准的默认数据类型。
但在C，它们实际上并非如此。
但是，我们已经创建了它。
所以，如果你需要创建 一个变量，其类型是BOOL，
只是一定要＃包括CS50.h 在程序的开始，
你就可以创建 bool类型的变量。
>> 如果你忘了＃包括CS50.h，和 你开始使用布尔型变量，
你可能会遇到一些问题 当你编译你的程序。
所以，只是在寻找的。
也许你可以修复 通过磅包括CS50.h.问题
>> 其他主要的数据类型，我们 在CS50库为您提供
是字符串。
那么，什么是一个字符串？
字符串是真的只是说说而已。
他们是字符的集合。
他们的话。
他们的句子。
他们是段落。
可能是整本书，甚至。
>> 很短很长 一系列字符。
如果你需要使用字符串， 例如，存储一个字，
只是一定要包括CS50.h 在程序的开始
所以你可以使用字符串类型。
然后你就可以创建变量 其数据类型为字符串。
现在，后来在使用过程中， 我们还可以看到，这是
不是故事的全部，无论是。
我们会遇到的事情 所谓结构，
这可让您将可能是什么 一个整数和一个串成一个单元。
我们可以利用它来进行 一些目的，这可能
派上用场，后来在课程。
>> 同时我们也将学习 有关定义的类型，
它允许您创建 自己的数据类型。
我们并不需要担心 关于现在。
但是，只知道这是 一些在地平线上，
有很多更给这整个 类型的事情不是我告诉你只是
现在。
所以，现在，我们已经学到了 有关的基本数据点点
类型和CS50的数据类型，让我们 谈谈如何使用变量工作
和使用这些创建它们 在我们的项目的数据类型。
如果你想创建一个变量， 所有你需要做的是两件事情。
>> 首先，你需要给它一个类型。
你需要的第二件事 做的就是给它一个名字。
一旦你做到了这一点，并掌掴一 分号在该行的末尾，
你已经创建了一个变量。
>> 因此，这里的两个例子。
INT编号;焦信;.
什么都我在这里做了什么？
我创建了两个变量。
>> 第一，可变的 名字是数字。
而一些能够保持整 输入值，因为它的类型为int。
信是另一个变量 可容纳字符
因为它的数据类型为char。
>> 很简单，对不对？
如果你发现自己 在一个情况下
您需要创建多个 相同类型的变量，
你只需要指定 类型名称一次。
然后，只需列出许多变数 这种类型的，因为你需要。
>> 所以我可以举例来说，在这里 在这个代码第三行，
说INT高度;，新的生产线。
诠释宽度;.
而这将工作太。
我还是会得到两个变量称为 的高度和宽度，其中每一个
是一个整数。
但我不允许，事情C语法， 合并成一条线。
智力高度，宽度;这是同样的事情。
我创建了两个变量，一个叫 高度一个叫做宽度，这两个
能控股 整型值。
>> 同样在这里，我可以创建三个 浮点值一次。
我也许可以创建一个变量 所谓的2--平方根
这大概最终会 持有浮动point--
广场的代表性 根2--平方根3，和PI。
我可以这样做 在三个不同的线路。
浮动，平方根2;浮法平方根 3;浮动PI;这将工作太。
>> 但同样，我可以巩固 此成一个单一的代码行。
使事情一点点 短，而不是笨重。
>> 现在，在一般情况下，它的良好的设计，只 当你需要它声明一个变量。
我们将谈一点 多一点有关
后来在使用过程中 当我们讨论的范围。
所以不一定需要 创建所有变量
在程序的开始时，该 有些人可能已经完成了过去，
或者肯定是一个非常普遍的 编码习惯很多年前
与C工作时，你可能只 要创建一个变量权当
你需要它。
好吧。
因此，我们已经创建的变量。
我们如何使用它们？
我们声明过了 可变的，我们并不需要
指定数据类型 该变量了。
事实上，如果你这样做，你可能 结束了一些奇怪的后果
那种我们会掩盖现在。
但我只想说， 奇怪的事情会
开始，如果你在不经意间发生 使用相同的名称重新声明变量
一遍又一遍。
>> 所以在这里我有四行代码。
我有几个 评论那里只是说明
什么在 每一行只是帮助
你得到位于这是怎么回事。
因此，INT数;.
你看到了以前。
这是一个变量声明。
>> 我现在已经创建了一个变量 被叫号码这
能够保持整型值。
我已经声明它。
>> 下一行，我分配 一个价值数。
数等于17。
这是怎么回事呢？
我把17号 里面的变量。
>> 所以，如果我然后打印出什么 号的内容以后，
他们会告诉我，这是17。
所以，我已经声明一个变量， 然后我赋予它。
>> 我们可以重复这个过程 再次字符字母;.
这是一个宣言。
信等于资本 H.这是一个任务。
很简单，太。
>> 现在，这个过程可能 似乎那种愚蠢的。
为什么我们这样做 在两行代码？
有没有更好的办法做到这一点？
事实上，有。
有时候，你可能会看到 这个所谓的初始化。
这是当你声明一个变量 并在同一时间分配值。
这其实是一个相当 常见的事。
当您，您通常会创建一个变量 希望它有一些基本的价值。
即使是0或东西。
你只要你给它一个值。
>> 您可以初始化变量。
诠释数量等于17是一样 前两行代码了上面。
炭信等于h是相同的 码的第三和第四线的上方。
这里最重要的外卖 当我们宣布和分配
变量是我们以后 它宣称，通知
我没有再次使用的数据类型。
我不是说INT数量上等于17 第二行的代码，例如。
我只是说数目等于17。
>> 此外，再后声明一个变量 你已经宣称它会导致
一些奇怪的结果。
所以，只是要小心这一点。
>> 我是道格·劳埃德。
这是CS50。