>> [音樂播放]
演講嘉賓：好的。
所以，讓我們來談談另一個 事情的那種獨特的為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。