[音樂播放] 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。