[音乐播放] DOUG LLOYD:嗨,让我们 谈谈C.运营商 因此,我们已经看到的,事实上, 等于赋值运算符。 它允许我们只是把 一个值的变量。 这就是分配 运营商,单个等号。 为了操纵和工作 其值和变量C, 我们有许多运营商 在我们的处置,我们可以使用。 让我们来看看 一些常见的 开始的算术运算符。 正如你所期望的,我们能做到 在C非常基本的数学运算 我们可以加,减,乘, 使用加鸿沟号,减号,明星, 和斜线,分别。 这里有一对夫妇的行 代码中,我们做到这一点。 所以,我们是int x等于y加1。 让我们假设地方 高达上面这行代码 我们曾说过INT y等于10。 什么是x的值后,我 执行这个代码第一行? 你说11? 你会正确。 这是为什么? 好吧,y为10。 有些我是说INT x等于10加1。 10加1是11。 所以,值11变 存储在变量x。 不算太坏,是吗? 怎么样这下一行 代码? x等于x次5。 那么,在我们执行 这行代码中,x为11。 那么,什么是价值 十大之后这行代码? 拿第二。 所以,x等于x次5。 x为11。 所以,x等于11倍5。 或55。 所以,如果你说55,你是对的。 现在,它可能是一个有点混乱,但 与分配工作在C方式 在右边的值变 分配给左边的值。 因此,首先我们评估x次5。 所以,11次5是55。 然后我们存放在X中的价值。 在11,这是有 之前,现在覆盖。 因此,X的值现在是55。 但愿这是非常简单的。 还有,你已经另算 恐怕未必听说过 叫这个,但你 当然,在过去的工作 如果你还记得长你的日子 师早在小学。 这就是所谓的模运算。 什么模所做的就是 给你剩下 当你把两个数。 所以,如果我说13除以 4,什么是余数? 并且该值将被计算 由模运算符。 所以,我有一个行代码 在这里,INT m等于13模4。 我在这里说的评论 是m的值现在为1。 为什么这样说呢? 好了,做长除法在你的 头,如果你和我一起承担一秒钟。 所以,我已经4除以13。 4进入13三倍 与余数1。 因此,基本上,所有的 模运算符 是它告诉你,当你 鸿沟,你得到的余数。 你可能会认为这实际上是 不是一个十分有用的东西, 但你会惊讶,其实, 由频率模 运营商可以派上用场。 有几个问题 我们会做CS50的处理。 这也是好做 像随机数。 因此,举例来说,如果你曾经 听到一个随机数发生器, 那将会给你一个数 从0到一些巨大的数字。 但是,也许你才真正 需要一个从0至20。 如果使用模运算符 在这巨大的数字, 得到由所生成的 随机数发生器, 你会采取一切 巨大的价值是,它除以20, 和得到的余数。 其余只能 其值从0到19。 所以,你使用模运算符 利用这个庞大的数字 和惠特尔下来到的东西 多一点有意义的。 我敢肯定你会 能够同时使用的那些 在未来的某个时候在CS50。 因此,C也为我们提供了一种方式 申请的算术 操作者一个单可变 在一个小更简便方法。 所以,在上一张幻灯片, 我们看到x等于x次5。 这工作。 x乘以5,然后被存储回x中。 有一个较短的方式做到这一点,思想, 和它的语法x次等于5。 这是完全相同的东西 说x等于x次5。 这只是一个稍微 较短的方式做到这一点。 而当你看到一些 分发代码或您 看到一些示例代码 做这样的事情, 刚刚熟悉 语法意味着什么。 你当然不会有 使用它,但如果这样做, 它可能使你的代码 看起来有点滑头。 ,知道你也可以使用任何 不同的运营商,我们已把 而不是之前的时候见过。 你可以说X加上等于5,减 等于5,倍,除和国防部。 所有这些工作。 还有一些 这是如此普遍在C中 我们已经决定 完善甚至进一步。 递增1变量 或递减一个变量1 就是这样一个普通件事 - 尤其是 当我们谈论循环待会儿 on--,我们已经决定,而不是 说像X加等于1, 或x等于x加1,我们甚至 总之交给了以X加再加。 所以中,x等于x加1中,x加等于1, 和X加再加都做同样的事情。 他们都增加x 1。 但是,这递增 和递减1 是如此普遍,我们有 加上加号和减号减 这让我们速记 这进一步加剧。 所以,让我们切换齿轮第二 说说布尔表达式。 所有这一切都是一种也属于 经营者的总类别。 但是布尔表达式, 不像算术运算符, 用于比较的值。 因此,同样,所有布尔在C表达式 计算结果为两个可能的值之一, 回忆。 对或错。 这是仅有的两个值 布尔变量可以承担。 我们可以使用的结果 布尔表达式 在很多方面编程。 事实上,你会 这样做了不少。 例如,我们可以决定, 好吧,如果某个条件为真, 也许我会借这个 分支下来我的代码。 有条件的,可以这么说。 我们将了解这些很快了。 或者,也许,只要 这是真的,我想 要继续这样做 一遍又一遍又一遍。 一个循环。 在这两种情况下,知道我们正在使用 布尔表达式,真或假, 以决定是否 采取特定路径。 有时,当我们正在努力 与布尔表达式, 我们将使用BOOL型变量。 您可能宣布 一个布尔类型的变量, 你会在使用你的 布尔表达式。 但是,你并不总是必须做的。 事实证明,在C,每一个非0 值是相同的话说如此。 如果你宣布一个 Boolean类型的变量, 并赋予它值true,这是 与声明整数 并分配给它的价值 1,2,3,或任何真正的价值 任何0以外。 因为在C,每一个非0值是true。 0,另一方面,是假的。 这可能会派上 方便后来才知道, 但只是要记住。 我们并不总是有使用 布尔类型变量的时候,我们 正在与布尔表达式。 有两种主要类型布尔 表达式我们将与。 逻辑运算符和 关系运算符。 还有就是语言 不是非常重要。 这真的只是我如何将它们分组。 你一定会,我想,赶紧 意识到发生了什么关系运算符是, 根据他们是什么时,我们 在第二谈论它们。 不过不用担心一定 记住这个词的逻辑运算符 或关系运算符。 我只是用它来组 他们在一个合理的方式。 那么,让我们来看看 三个逻辑运算 我们会看到不少 在CS50编程位 在编程更普遍。 逻辑与是真实的,如果和 只有当两个操作数是正确的。 否则为false。 哪里是什么意思? 所以,让我们说我在 指向我的代码,我有 两个变量,x和y。 我想,以决定是否 做一些事情在我的代码 基于如果x为真和y是真实的。 我只是想,如果这样做 他们两人都是真实的, 否则,我不希望走这 路径,因为它不会帮助我。 我能说的是如果x &&年。 这将是一个合乎逻辑的布尔 表达比较X和Y 并采取一定的路径 根据他们的值。 所以,如果x是真,y为真 基于此真值表就到这里, 只有这样,我们走这条路。 如果x,&&Y。 这只是true--的,只 如果X是真实的,y是真实的。 如果其中一个是假的, 正如我们所看到的真值表, 然后x和y是不正确的。 因此,X&Y是假的。 逻辑或为真,当且仅 如果至少一个操作数是真实的。 否则为false。 因此,逻辑与要求 x和y是真实的。 逻辑或需要X是真实的或y 是真实的或x和y是真实的。 因此,我们再次一种发现 自己的处境 我们要去的地方我们的代码, 而我们达到了一个岔路口。 我们要下去一 如果x为true特定路径 或y是真实的,但不 不一定,如果无一不是如此。 但是,如果有可能两者都是真实的。 因此,如果x为true,Y是 真的,我们会走这条路。 x是真实的。 其中之一是真的吧? 如果x为true,y是真实的。 如果x是真实的,并且y是假的, 其中之一仍然是正确的。 因此,x或y仍然是正确的。 如果x是假的,并且y是真实的, 其中之一仍然是真实的,对不对? y是真实的,在这种情况下。 所以,这是真的,X或Y是真实的。 只有当x为false而y是假的 我们不走这条路, 因为x和y都不是真实的。 现在,如果你正在寻找 屏幕现在 ,不知道是什么 符号是用于逻辑OR, 这就是所谓的竖线。 如果你在看你的键盘 一分钟,因为我现在做, 它通常略高于 回车键,大多数键盘上, 在同一个按键反斜杠。 这也是通常是正确的 旁边的方括号。 因此,它可能是一个关键的,你 没有输入非常近。 但是,如果你曾经做的 逻辑比较, 因为我们会做一个 很多在使用过程中,它的 将是有用的,以 找到钥匙并用它。 因此,它通常在相同的密钥 作为反斜线正上方输入。 最终的逻辑运算符是没有的。 而不是是相当简单的。 它反转操作数的值。 如果x是真的,那不是X是假的。 如果x为假,那么不是X是真的。 有时你会听到这个符号 发音为爆炸或感叹号 或不。 这是几乎所有的同样的事情。 如果你听到了口语和 你不知道这意味着什么, 它只是感叹 点,但有时它的 叫上几个不同的事情。 好吧,让需要 关心逻辑运算符。 那么,让我们来谈谈 关系运算符。 同样,如果你熟悉这个 算术早在小学的时候, 你可能熟悉 用了这些工作了。 这些行为完全如你所期望。 所以不到这是真的,在这 例如,如果x小于y。 所以,如果x是4,y是 6,x是小于y。 这是真的。 小于或等于 工作得同样。 如果x是4,y是4,则 x小于或等于y。 比...更棒。 x是比y大。 和大于或等于中,x 大于或等于y。 如果这是真的,那么你会 传递表情, 你会往下走 在路上这条道路。 如果你有一个如果x大于Y, 并且x是,实际上比y大, 你会做什么是 受这一条件。 请注意,我们没有 少于单个字符 或等于,因为你可能会 熟悉的数学课本。 所以,我们比符号少, 其次是一个等号。 这就是我们代表 大于或等于以下。 同样,我们做的 为大于或等于。 最后的两个关系 运算是很重要 正在测试的平等和不平等。 所以,如果x等于等于Y,是真实的 如果x和y的值是相同的。 如果x为10,y为10,然后 x等于等于y是真实的。 如果x是10和y为11中,x 等于等于y是不正确的。 我们还可以利用不平等测试 惊叹号或爆炸与否, 再次。 如果x不是等于y,如果 这就是我们这里使用的测试, 我们会好到哪里去。 所以,如果x不等于 Y,我们会走这条路。 要非常小心这里。 这是一个非常常见的mistake--和 一个我确实做了不少的时候 我是越来越started-- 不小心误 赋值运算符,单等号, 对于相等比较运营商, 双等于。 它会导致一些奇怪的 在你的代码的行为, 通常编译器会 提醒你一下,当您尝试 和编译代码,但有时 您可能能够瞒天过海。 这并不一定是好事 您通过瞒天过海,但。 正是如此,如果你正在做的 一个不平等的测试, 如果你正在检查是否将两个 不同的变量具有相同的值 他们在里面,请务必使用 等于平等,而不是单一的平等。 而这样的程序将 有你想要的行为。 我是道格·劳埃德,这是CS50。