上一章,我們大談了hello,world的一生。下面我們細細品味基礎中的一些,從一個簡單的案例開始,了解對象,類型等概念。我喜歡解釋例子,讓大家聽着有味,不枯燥~
最常見的就是keyborad input(鍵盤輸入)。從helloworldd的輸出,我們也想得到使用者的輸入。通常,實行中的程式會給它的輸入産生輸出。例如,輸入你的名字,輸出
一句問候。有時候它就在身邊,像我最愛的蘋果手機一樣。人機互動就是那麼簡單~
圖2.1.1 人機互動(.net)
回到技術點,為了讀取使用者輸入的資料,我們需要在計算機記憶體中某個地方放置讀取所需的内容。這就是對象(class)。對象是什麼,對象時一個某種類型的記憶體區域。其中類型則确定了對象的資訊。而一個有名字的對象,稱為該對象的執行個體(也叫變量)。做個比喻,一看到對象大家想到的就是人,但這裡人類才相當于對象。如果想到具體到你的對象,那是變量。
下面我們看下一個簡單問候的例子:
<a href="http://www.bysocket.com/?p=863#">?</a>
1
2
3
4
5
6
7
8
9
10
<code>#include <iostream></code>
<code>#include <string></code>
<code>using namespace std;</code>
<code>int</code> <code>main()</code>
<code>{</code>
<code> </code><code>string your_name;</code>
<code> </code><code>cin >> your_name;</code>
<code> </code><code>cout <<</code><code>"你好~"</code> <code><< your_name << endl;</code>
<code>}</code>
從代碼中我們可以看出,這個程式很簡單。當你輸入你的名字,比如我的 “jeff_lee”。輸出如下:
圖2.1.2 顯示問候程式界面
值得注意的是我的fisrt name 和 last name 不能和空格隔開。原因很簡單:
剖析下剛剛那小程式(堅信:小程式也有學習地方):
<code>cin >> your_name;</code>
這個會儲存一個字元串的記憶體區域,并将這個區域命名為your_name。意義在于計算機為這個變量配置設定記憶體空間。如圖所示:
圖2.1.3 記憶體分析
<code>cout <<</code><code>"你好~"</code> <code><< your_name << endl;</code>
下面一句上面也講過,它會将根據變量類型,讓那個記憶體存入對象的值。本來上面空的記憶體區域則有了資料。如圖:
圖2.1.4 記憶體分析
正如我們上面所說,計算機記憶體存儲資料的位置稱為對象。我們需要用一個名字來通路,進而是這個對象成為變量。變量則有她特定的類型。基本類型羅列如下:
bool 布爾型
char 字元型 8位
wchar_t 寬字元型 16位
short 短整型 16位
int 整形 16位
long 長整形 32位
float 單精度浮點型 6為有效數字
double 雙精度浮點型 10位有效數字
long double
下面 看下一個好玩的例子:
11
12
<code> </code><code>int</code> <code>your_age;</code>
<code> </code><code>cin >> your_name >> your_age;</code>
<code> </code><code>cout <<</code><code>"hi!~"</code> <code><< your_name <<</code><code>" is "</code> <code><< your_age <<</code><code>" years old"</code><code>;</code>
如果你嘗試輸入“ jeff lee 21”,按下Enter鍵。你會很驚訝~,為什麼不是出現 “jeff lee is 21 years old.”而是
圖2.2 有趣例子的顯示
這裡我們關注的有兩點,再次再次強調 cin>>該操作符是根據後面變量的類型讀取資料。輸入結束條件 :遇到enter、space、tab鍵。其次,string型的“lee”不會被int型age所讀取。這是很屬虎的将是随機數。為什麼?因為age沒有被初始化,當你執行的時候,會得到記憶體中某部分的垃圾值。比如上面的 -858993460.你可以想想,如果再次運作下上面的程式,輸入一樣的話,age會變~
運算,何為運算?運算的本質其實是集合的映射。最初的程式基本都是為了運算誕生的。這小塊就仿佛來到了我們喜歡的數學領域。
圖 2.3 早期計算機
但是,很多想數學細節情況要記住。比如:
<code>string str =</code><code>"jefflee"</code><code>-</code><code>"lee"</code><code>;</code>
編譯器是拒絕對字元串的減運算。但編譯器很笨,她不知道有些例如,age大于0;
<code>int</code> <code>age = -</code><code>99</code><code>;</code>
在你看來是荒唐的,在它那裡确實正确的。
是以,運算要我們去符合編譯器規則,結合問題定義自己規則。
(這是第二章 上等下篇文章一起出來再總結。)