1 00:00:00,000 --> 00:00:05,960 >> [音樂播放] 2 00:00:05,960 --> 00:00:08,540 >> DOUG LLOYD:嗨,讓我們 談談C.運營商 3 00:00:08,540 --> 00:00:12,590 因此,我們已經看到的,事實上, 等於賦值運算符。 4 00:00:12,590 --> 00:00:15,510 它允許我們只是把 一個值的變量。 5 00:00:15,510 --> 00:00:18,046 這就是分配 運營商,單個等號。 6 00:00:18,046 --> 00:00:20,670 為了操縱和工作 其值和變量C, 7 00:00:20,670 --> 00:00:23,710 我們有許多運營商 在我們的處置,我們可以使用。 8 00:00:23,710 --> 00:00:25,543 讓我們來看看 一些常見的 9 00:00:25,543 --> 00:00:27,430 開始的算術運算符。 10 00:00:27,430 --> 00:00:31,080 正如你所期望的,我們能做到 在C非常基本的數學運算 11 00:00:31,080 --> 00:00:36,520 我們可以加,減,乘, 使用加鴻溝號,減號,明星, 12 00:00:36,520 --> 00:00:38,422 和斜線,分別。 13 00:00:38,422 --> 00:00:40,630 這裡有一對夫婦的行 代碼中,我們做到這一點。 14 00:00:40,630 --> 00:00:44,150 所以,我們是int x等於y加1。 15 00:00:44,150 --> 00:00:46,460 讓我們假設地方 高達上面這行代碼 16 00:00:46,460 --> 00:00:49,230 我們曾說過INT y等於10。 17 00:00:49,230 --> 00:00:55,790 什麼是x的值後,我 執行這個代碼第一行? 18 00:00:55,790 --> 00:00:56,700 你說11? 19 00:00:56,700 --> 00:00:57,910 你會正確。 20 00:00:57,910 --> 00:00:58,420 這是為什麼呢? 21 00:00:58,420 --> 00:00:59,790 好吧,y為10。 22 00:00:59,790 --> 00:01:03,215 有些我是說INT x等於10加1。 23 00:01:03,215 --> 00:01:04,269 10加1是11。 24 00:01:04,269 --> 00:01:08,540 所以,值11變 存儲在變量x。 25 00:01:08,540 --> 00:01:09,740 不算太壞,是嗎? 26 00:01:09,740 --> 00:01:14,040 >> 怎麼樣這下一行 代碼? x等於x次5。 27 00:01:14,040 --> 00:01:17,700 那麼,在我們執行 這行代碼中,x為11。 28 00:01:17,700 --> 00:01:21,237 那麼,什麼是價值 十大之後這行代碼? 29 00:01:21,237 --> 00:01:21,820 拿第二。 30 00:01:21,820 --> 00:01:24,710 31 00:01:24,710 --> 00:01:27,620 所以,x等於x次5。 32 00:01:27,620 --> 00:01:29,850 x為11。 33 00:01:29,850 --> 00:01:32,970 所以,x等於11倍5。 34 00:01:32,970 --> 00:01:34,360 或55。 35 00:01:34,360 --> 00:01:36,490 所以,如果你說55,你是對的。 36 00:01:36,490 --> 00:01:41,770 >> 現在,它可能是一個有點混亂,但 與分配工作在C方式 37 00:01:41,770 --> 00:01:46,030 在右邊的值變 分配給左邊的值。 38 00:01:46,030 --> 00:01:49,090 因此,首先我們評估x次5。 39 00:01:49,090 --> 00:01:50,800 所以,11次5是55。 40 00:01:50,800 --> 00:01:53,340 然後我們存放在X中的價值。 41 00:01:53,340 --> 00:01:56,100 在11,這是有 之前,現在覆蓋。 42 00:01:56,100 --> 00:01:58,280 因此,X的值現在是55。 43 00:01:58,280 --> 00:02:00,820 但願這是非常簡單的。 44 00:02:00,820 --> 00:02:04,246 >> 還有,你已經另算 恐怕未必聽說過 45 00:02:04,246 --> 00:02:06,620 叫這個,但你 當然,在過去的工作 46 00:02:06,620 --> 00:02:09,470 如果你還記得長你的日子 師早在小學。 47 00:02:09,470 --> 00:02:11,270 這就是所謂的模運算。 48 00:02:11,270 --> 00:02:13,620 什麼模所做的就是 給你剩下 49 00:02:13,620 --> 00:02:15,400 當你把兩個數。 50 00:02:15,400 --> 00:02:21,750 所以,如果我說13除以 4,什麼是餘數? 51 00:02:21,750 --> 00:02:24,860 並且該值將被計算 由模運算符。 52 00:02:24,860 --> 00:02:28,320 >> 所以,我有一個行代碼 在這裡,INT m等於13模4。 53 00:02:28,320 --> 00:02:31,960 我在這裡說的評論 是m的值現在為1。 54 00:02:31,960 --> 00:02:32,750 為什麼這樣說呢? 55 00:02:32,750 --> 00:02:36,270 好了,做長除法在你的 頭,如果你和我一起承擔一秒鐘。 56 00:02:36,270 --> 00:02:40,070 所以,我已經4除以13。 57 00:02:40,070 --> 00:02:44,087 4進入13三倍 與餘數1。 58 00:02:44,087 --> 00:02:45,920 因此,基本上,所有的 模運算符 59 00:02:45,920 --> 00:02:48,600 是它告訴你,當你 鴻溝,你得到的餘數。 60 00:02:48,600 --> 00:02:51,420 你可能會認為這實際上是 不是一個十分有用的東西, 61 00:02:51,420 --> 00:02:54,350 但你會驚訝,其實, 由頻率模 62 00:02:54,350 --> 00:02:55,820 運營商可以派上用場。 63 00:02:55,820 --> 00:02:58,420 >> 有幾個問題 我們會做CS50的處理。 64 00:02:58,420 --> 00:03:00,545 這也是好做 像隨機數。 65 00:03:00,545 --> 00:03:03,850 因此,舉例來說,如果你曾經 聽到一個隨機數發生器, 66 00:03:03,850 --> 00:03:06,620 那將會給你一個數 從0到一些巨大的數字。 67 00:03:06,620 --> 00:03:10,390 但是,也許你才真正 需要一個從0至20。 68 00:03:10,390 --> 00:03:13,425 如果使用模運算符 在這巨大的數字, 69 00:03:13,425 --> 00:03:17,080 得到由所生成的 隨機數發生器, 70 00:03:17,080 --> 00:03:20,230 你會採取一切 巨大的價值是,它除以20, 71 00:03:20,230 --> 00:03:21,210 和得到的餘數。 72 00:03:21,210 --> 00:03:24,050 其餘只能 其值從0到19。 73 00:03:24,050 --> 00:03:27,140 所以,你使用模運算符 利用這個龐大的數字 74 00:03:27,140 --> 00:03:29,640 和惠特爾下來到的東西 多一點有意義的。 75 00:03:29,640 --> 00:03:31,764 我敢肯定你會 能夠同時使用的那些 76 00:03:31,764 --> 00:03:34,710 在未來的某個時候在CS50。 77 00:03:34,710 --> 00:03:37,030 >> 因此,C也為我們提供了一種方式 申請的算術 78 00:03:37,030 --> 00:03:39,910 操作者一個單可變 在一個小更簡便方法。 79 00:03:39,910 --> 00:03:44,520 所以,在上一張幻燈片, 我們看到x等於x次5。 80 00:03:44,520 --> 00:03:45,260 這工作。 81 00:03:45,260 --> 00:03:47,660 x乘以5,然後被存儲回x中。 82 00:03:47,660 --> 00:03:52,490 有一個較短的方式做到這一點,思想, 和它的語法x次等於5。 83 00:03:52,490 --> 00:03:55,020 這是完全相同的東西 說x等於x次5。 84 00:03:55,020 --> 00:03:56,824 這只是一個稍微 較短的方式做到這一點。 85 00:03:56,824 --> 00:03:58,740 而當你看到一些 分發代碼或您 86 00:03:58,740 --> 00:04:01,287 看到一些示例代碼 做這樣的事情, 87 00:04:01,287 --> 00:04:03,120 剛剛熟悉 語法意味著什麼。 88 00:04:03,120 --> 00:04:05,980 你當然不會有 使用它,但如果這樣做, 89 00:04:05,980 --> 00:04:08,235 它可能使你的代碼 看起來有點滑頭。 90 00:04:08,235 --> 00:04:11,360 ,知道你也可以使用任何 不同的運營商,我們已把 91 00:04:11,360 --> 00:04:12,660 而不是之前的時候見過。 92 00:04:12,660 --> 00:04:16,720 你可以說X加上等於5,減 等於5,倍,除和國防部。 93 00:04:16,720 --> 00:04:18,959 所有這些工作。 94 00:04:18,959 --> 00:04:21,089 >> 還有一些 這是如此普遍在C中 95 00:04:21,089 --> 00:04:24,080 我們已經決定 完善甚至進一步。 96 00:04:24,080 --> 00:04:26,916 遞增1變量 或遞減一個變量1 97 00:04:26,916 --> 00:04:30,040 就是這樣一個普通件事 - 尤其是 當我們談論循環待會兒 98 00:04:30,040 --> 00:04:35,240 on--,我們已經決定,而不是 說像X加等於1, 99 00:04:35,240 --> 00:04:40,190 或x等於x加1,我們甚至 總之交給了以X加再加。 100 00:04:40,190 --> 00:04:46,940 所以中,x等於x加1中,x加等於1, 和X加再加都做同樣的事情。 101 00:04:46,940 --> 00:04:48,470 他們都增加x 1。 102 00:04:48,470 --> 00:04:50,630 但是,這遞增 和遞減1 103 00:04:50,630 --> 00:04:54,110 是如此普遍,我們有 加上加號和減號減 104 00:04:54,110 --> 00:04:59,140 這讓我們速記 這進一步加劇。 105 00:04:59,140 --> 00:05:02,110 >> 所以,讓我們切換齒輪第二 說說布爾表達式。 106 00:05:02,110 --> 00:05:06,340 所有這一切都是一種也屬於 經營者的總類別。 107 00:05:06,340 --> 00:05:09,030 但是布爾表達式, 不像算術運算符, 108 00:05:09,030 --> 00:05:11,860 用於比較的值。 109 00:05:11,860 --> 00:05:15,550 因此,同樣,所有布爾在C表達式 計算結果為兩個可能的值之一, 110 00:05:15,550 --> 00:05:16,050 回憶。 111 00:05:16,050 --> 00:05:17,740 真或假的。 112 00:05:17,740 --> 00:05:21,880 這是僅有的兩個值 布爾變量可以承擔。 113 00:05:21,880 --> 00:05:25,780 我們可以使用的結果 布爾表達式 114 00:05:25,780 --> 00:05:27,650 在很多方面編程。 115 00:05:27,650 --> 00:05:29,400 事實上,你會 這樣做了不少。 116 00:05:29,400 --> 00:05:32,870 >> 例如,我們可以決定, 好吧,如果某個條件為真, 117 00:05:32,870 --> 00:05:34,665 也許我會借這個 分支下來我的代碼。 118 00:05:34,665 --> 00:05:35,980 有條件的,可以這麼說。 119 00:05:35,980 --> 00:05:37,970 我們將了解這些很快了。 120 00:05:37,970 --> 00:05:40,560 或者,也許,只要 這是真的,我想 121 00:05:40,560 --> 00:05:42,790 要繼續這樣做 一遍又一遍又一遍。 122 00:05:42,790 --> 00:05:43,480 一個循環。 123 00:05:43,480 --> 00:05:48,350 在這兩種情況下,知道我們正在使用 布爾表達式,真或假, 124 00:05:48,350 --> 00:05:52,411 以決定是否 採取特定路徑。 125 00:05:52,411 --> 00:05:54,660 有時,當我們正在努力 與布爾表達式, 126 00:05:54,660 --> 00:05:56,410 我們將使用BOOL型變量。 127 00:05:56,410 --> 00:05:58,461 您可能宣布 一個布爾類型的變量, 128 00:05:58,461 --> 00:06:00,210 你會在使用你的 布爾表達式。 129 00:06:00,210 --> 00:06:02,130 但是,你並不總是必須做的。 130 00:06:02,130 --> 00:06:06,690 事實證明,在C,每一個非0 值是相同的話說如此。 131 00:06:06,690 --> 00:06:10,680 如果你宣布一個 Boolean類型的變量, 132 00:06:10,680 --> 00:06:14,240 並賦予它值true,這是 與聲明整數 133 00:06:14,240 --> 00:06:17,410 並分配給它的價值 1,2,3,或任何真正的價值 134 00:06:17,410 --> 00:06:19,580 任何0以外。 135 00:06:19,580 --> 00:06:22,690 因為在C,每一個非0值是true。 136 00:06:22,690 --> 00:06:24,820 0,另一方面,是假的。 137 00:06:24,820 --> 00:06:27,162 這可能會派上 方便後來才知道, 138 00:06:27,162 --> 00:06:28,620 但只是要記住。 139 00:06:28,620 --> 00:06:31,890 我們並不總是有使用 布爾類型變量的時候,我們 140 00:06:31,890 --> 00:06:34,980 正在與布爾表達式。 141 00:06:34,980 --> 00:06:37,890 >> 有兩種主要類型布爾 表達式我們將與。 142 00:06:37,890 --> 00:06:40,640 邏輯運算符和 關係運算符。 143 00:06:40,640 --> 00:06:42,640 還有就是語言 不是非常重要。 144 00:06:42,640 --> 00:06:44,970 這真的只是我如何將它們分組。 145 00:06:44,970 --> 00:06:49,222 你一定會,我想,趕緊 意識到發生了什麼關係運算符是, 146 00:06:49,222 --> 00:06:51,680 根據他們是什麼時,我們 在第二談論它們。 147 00:06:51,680 --> 00:06:54,250 不過不用擔心一定 記住這個詞的邏輯運算符 148 00:06:54,250 --> 00:06:55,460 或關係運算符。 149 00:06:55,460 --> 00:07:00,070 我只是用它來組 他們在一個合理的方式。 150 00:07:00,070 --> 00:07:02,620 >> 那麼,讓我們來看看 三個邏輯運算 151 00:07:02,620 --> 00:07:04,970 我們會看到不少 在CS50編程位 152 00:07:04,970 --> 00:07:06,710 在編程更普遍。 153 00:07:06,710 --> 00:07:10,470 邏輯與是真實的,如果和 只有當兩個操作數是正確的。 154 00:07:10,470 --> 00:07:11,775 否則為false。 155 00:07:11,775 --> 00:07:12,650 哪裡是什麼意思? 156 00:07:12,650 --> 00:07:15,840 所以,讓我們說我在 指向我的代碼,我有 157 00:07:15,840 --> 00:07:18,310 兩個變量,x和y。 158 00:07:18,310 --> 00:07:21,620 我想,以決定是否 做一些事情在我的代碼 159 00:07:21,620 --> 00:07:25,780 基於如果x為真和y是真實的。 160 00:07:25,780 --> 00:07:27,730 我只是想,如果這樣做 他們兩人都是真實的, 161 00:07:27,730 --> 00:07:30,980 否則,我不希望走這 路徑,因為它不會幫助我。 162 00:07:30,980 --> 00:07:37,420 我能說的是如果x &&年。 163 00:07:37,420 --> 00:07:42,380 這將是一個合乎邏輯的布爾 表達比較X和Y 164 00:07:42,380 --> 00:07:45,240 並採取一定的路徑 根據他們的值。 165 00:07:45,240 --> 00:07:48,400 所以,如果x是真,y為真 基於此真值表就到這裡, 166 00:07:48,400 --> 00:07:50,430 只有這樣,我們走這條路。 167 00:07:50,430 --> 00:07:52,940 如果x,&&Y。 168 00:07:52,940 --> 00:07:58,320 這只是true--的,只 如果X是真實的,y是真實的。 169 00:07:58,320 --> 00:08:00,850 如果其中一個是假的, 正如我們所看到的真值表, 170 00:08:00,850 --> 00:08:02,370 然後x和y是不正確的。 171 00:08:02,370 --> 00:08:07,660 因此,X&Y是假的。 172 00:08:07,660 --> 00:08:12,044 >> 邏輯或為真,當且僅 如果至少一個操作數是真實的。 173 00:08:12,044 --> 00:08:12,710 否則為false。 174 00:08:12,710 --> 00:08:15,760 因此,邏輯與要求 x和y是真實的。 175 00:08:15,760 --> 00:08:21,185 邏輯或需要X是真實的或y 是真實的或x和y是真實的。 176 00:08:21,185 --> 00:08:23,310 因此,我們再次一種發現 自己的處境 177 00:08:23,310 --> 00:08:26,460 我們要去的地方我們的代碼, 而我們達到了一個岔路口。 178 00:08:26,460 --> 00:08:29,850 我們要下去一 如果x為true特定路徑 179 00:08:29,850 --> 00:08:33,299 或y是真實的,但不 不一定,如果無一不是如此。 180 00:08:33,299 --> 00:08:35,830 但是,如果有可能兩者都是真實的。 181 00:08:35,830 --> 00:08:38,460 因此,如果x為true,Y是 真的,我們會走這條路。 182 00:08:38,460 --> 00:08:39,066 x是真實的。 183 00:08:39,066 --> 00:08:40,190 其中之一是真的吧? 184 00:08:40,190 --> 00:08:42,080 如果x為true,y是真實的。 185 00:08:42,080 --> 00:08:44,910 如果x是真實的,並且y是假的, 其中之一仍然是正確的。 186 00:08:44,910 --> 00:08:48,020 因此,x或y仍然是正確的。 187 00:08:48,020 --> 00:08:52,290 如果x是假的,並且y是真實的, 其中之一仍然是真實的,對不對? 188 00:08:52,290 --> 00:08:53,290 y是真實的,在這種情況下。 189 00:08:53,290 --> 00:08:57,950 所以,這是真的,X或Y是真實的。 190 00:08:57,950 --> 00:09:02,620 只有當x為false而y是假的 我們不走這條路, 191 00:09:02,620 --> 00:09:04,454 因為x和y都不是真實的。 192 00:09:04,454 --> 00:09:06,370 現在,如果你正在尋找 屏幕現在 193 00:09:06,370 --> 00:09:09,062 ,不知道是什麼 符號是用於邏輯OR, 194 00:09:09,062 --> 00:09:10,270 這就是所謂的豎線。 195 00:09:10,270 --> 00:09:13,730 如果你在看你的鍵盤 一分鐘,因為我現在做, 196 00:09:13,730 --> 00:09:16,940 它通常略高於 回車鍵,大多數鍵盤上, 197 00:09:16,940 --> 00:09:19,630 在同一個按鍵反斜杠。 198 00:09:19,630 --> 00:09:22,790 這也是通常是正確的 旁邊的方括號。 199 00:09:22,790 --> 00:09:27,240 因此,它可能是一個關鍵的,你 沒有輸入非常近。 200 00:09:27,240 --> 00:09:29,700 但是,如果你曾經做的 邏輯比較, 201 00:09:29,700 --> 00:09:31,882 因為我們會做一個 很多在使用過程中,它的 202 00:09:31,882 --> 00:09:33,840 將是有用的,以 找到鑰匙並用它。 203 00:09:33,840 --> 00:09:38,340 因此,它通常在相同的密鑰 作為反斜線正上方輸入。 204 00:09:38,340 --> 00:09:39,757 >> 最終的邏輯運算符是沒有的。 205 00:09:39,757 --> 00:09:41,131 而不是是相當簡單的。 206 00:09:41,131 --> 00:09:42,830 它反轉操作數的值。 207 00:09:42,830 --> 00:09:46,080 如果x是真的,那不是X是假的。 208 00:09:46,080 --> 00:09:49,960 如果x為假,那麼不是X是真的。 209 00:09:49,960 --> 00:09:53,850 有時你會聽到這個符號 發音為爆炸或感嘆號 210 00:09:53,850 --> 00:09:55,231 或沒有。 211 00:09:55,231 --> 00:09:56,730 這是幾乎所有的同樣的事情。 212 00:09:56,730 --> 00:10:00,185 如果你聽到了口語和 你不知道這意味著什麼, 213 00:10:00,185 --> 00:10:02,310 它只是感嘆 點,但有時它的 214 00:10:02,310 --> 00:10:04,215 叫上幾個不同的事情。 215 00:10:04,215 --> 00:10:06,340 好吧,讓需要 關心邏輯運算符。 216 00:10:06,340 --> 00:10:08,640 那麼,讓我們來談談 關係運算符。 217 00:10:08,640 --> 00:10:11,610 同樣,如果你​​熟悉這個 算術早在小學的時候, 218 00:10:11,610 --> 00:10:13,870 你可能熟悉 用了這些工作了。 219 00:10:13,870 --> 00:10:15,411 這些行為完全如你所期望。 220 00:10:15,411 --> 00:10:19,800 所以不到這是真的,在這 例如,如果x小於y。 221 00:10:19,800 --> 00:10:24,380 所以,如果x是4,y是 6,x是小於y。 222 00:10:24,380 --> 00:10:26,035 這是真的。 223 00:10:26,035 --> 00:10:27,910 小於或等於 工作得同樣。 224 00:10:27,910 --> 00:10:33,020 如果x是4,y是4,則 x小於或等於y。 225 00:10:33,020 --> 00:10:35,310 大於。 x是比y大。 226 00:10:35,310 --> 00:10:39,310 和大於或等於中,x 大於或等於y。 227 00:10:39,310 --> 00:10:41,745 如果這是真的,那麼你會 傳遞表情, 228 00:10:41,745 --> 00:10:44,490 你會往下走 在路上這條道路。 229 00:10:44,490 --> 00:10:48,590 如果你有一個如果x大於Y, 並且x是,實際上比y大, 230 00:10:48,590 --> 00:10:51,670 你會做什麼是 受這一條件。 231 00:10:51,670 --> 00:10:54,396 >> 請注意,我們沒有 少於單個字符 232 00:10:54,396 --> 00:10:57,020 或等於,因為你可能會 熟悉的數學課本。 233 00:10:57,020 --> 00:10:59,874 所以,我們比符號少, 其次是一個等號。 234 00:10:59,874 --> 00:11:01,790 這就是我們代表 大於或等於以下。 235 00:11:01,790 --> 00:11:04,490 同樣,我們做的 為大於或等於。 236 00:11:04,490 --> 00:11:06,698 >> 最後的兩個關係 運算是很重要 237 00:11:06,698 --> 00:11:09,320 正在測試的平等和不平等。 238 00:11:09,320 --> 00:11:13,380 所以,如果x等於等於Y,是真實的 如果x和y的值是相同的。 239 00:11:13,380 --> 00:11:19,610 如果x為10,y為10,然後 x等於等於y是真實的。 240 00:11:19,610 --> 00:11:26,010 如果x是10和y為11中,x 等於等於y是不正確的。 241 00:11:26,010 --> 00:11:29,680 我們還可以利用不平等測試 驚嘆號或爆炸與否, 242 00:11:29,680 --> 00:11:30,330 再次。 243 00:11:30,330 --> 00:11:35,049 如果x不是等於y,如果 這就是我們這裡使用的測試, 244 00:11:35,049 --> 00:11:35,840 我們會好到哪裡去。 245 00:11:35,840 --> 00:11:40,340 所以,如果x不等於 Y,我們會走這條路。 246 00:11:40,340 --> 00:11:41,441 >> 要非常小心這裡。 247 00:11:41,441 --> 00:11:44,440 這是一個非常常見的mistake--和 一個我確實做了不少的時候 248 00:11:44,440 --> 00:11:47,340 我是越來越started-- 不小心誤 249 00:11:47,340 --> 00:11:51,690 賦值運算符,單等號, 對於相等比較運營商, 250 00:11:51,690 --> 00:11:52,582 雙等於。 251 00:11:52,582 --> 00:11:54,540 它會導致一些奇怪的 在你的代碼的行為, 252 00:11:54,540 --> 00:11:56,730 通常編譯器會 提醒你一下,當您嘗試 253 00:11:56,730 --> 00:11:59,910 和編譯代碼,但有時 您可能能夠瞞天過海。 254 00:11:59,910 --> 00:12:02,770 這並不一定是好事 您通過瞞天過海,但。 255 00:12:02,770 --> 00:12:04,710 正是如此,如果你正在做的 一個不平等的測試, 256 00:12:04,710 --> 00:12:07,970 如果你正在檢查是否將兩個 不同的變量具有相同的值 257 00:12:07,970 --> 00:12:11,980 他們在裡面,請務必使用 等於平等,而不是單一的平等。 258 00:12:11,980 --> 00:12:15,450 而這樣的程序將 有你想要的行為。 259 00:12:15,450 --> 00:12:18,400 我是道格·勞埃德,這是CS50。 260 00:12:18,400 --> 00:12:20,437