「小希呀,幫我算一下 5+7 是多少好嗎?」
『……』 (<== 瞬間算完了)
「小希?算好了嗎?答案是多少呢?」
『……』 (<== 儘管算完了但是沒有回答)

是的。這故事告訴我們一件事:

即使計算精確,沒有回答就沒有用

試想,當你手上擁有一台功能正常,
卻沒有螢幕的計算機,作何感想?

因此,使魔調教的第一步,
便是給予表達的能力。

我們在這一節的目的,
便是教導使魔向自己告白

看起來很私心,但我認為這件事極度重要。
是至關重大的第一步。
不論如何都不會退讓的。

那麼,讓我們開始吧。

首先先記住這招起手式:

#include <stdio.h>

int main()
{
	printf("Hello my MASTER!!");
    return 0;
}

至此,煉成陣基本型已成。
這段咒文能夠創造出最基本的使魔,
唯一的任務就是向主人打招呼
雖然直接告白也是可以的。

接下來我們實際發動它看看結果:

  • 執行 -> 編譯並執行 (註1)
    快捷鍵:F11

沒有意外的話會跳出一個小黑窗,
這就是你的第一隻使魔。

第一隻使魔

由於一出生打完招呼,
生涯任務瞬間便已完成,
生命週期亦隨之立刻結束。

原先程式結束,小黑窗也會馬上消失,
完全來不及確認結果。
啊啊,費盡生涯一切的努力成果,
竟連一瞬的停留都不被允許,
隨著生命消散,來不及留下一絲痕跡…

但好心的 Dev C++ 5.11 會幫你記錄下來,
可喜可賀、可喜可賀。

緊接著便是解析起手式:
剛好可以體會行號溝通的方便性,一舉兩得

1
2
3
4
5
6
7
#include <stdio.h>

int main()
{
	printf("Hello my MASTER!!");
    return 0;
}
  • line 1: 宣告搭載 stdio.h 機能 (註2)

    stdio.h 給予使魔表達和接收指令的機能
    STanDard Input & Output, 簡稱 std io
    中文為標準輸出輸入
    .h只是副檔名,header (註3) 的意思。
    絕對和H的事沒有任何關係

    如同我們想練習書法,並不需要自行收集材料,
    自行製造筆、墨和紙等必要用具一樣。
    只需要專注在最重要的『寫』上面。

    使魔的基本表達方式同理,幾乎是全世界都需要的。
    因此 C 已提供完整可靠的機能,
    只要搭載便可隨意發動!

  • line 3: 使魔的一生自此展開

    int main() 代表了使魔的一生,
    自大括號起,至大括號終。

    而寫在這中間的,
    便是使魔神聖不可侵犯的人生意義,
    是主人所賜予的命令,交付的使命。

    不管成敗,沒有苦樂;唯有實行,直至消散。
    是非對錯,意義何在?唯有其主,方得定奪。

    • line 5: 使魔的文字表達

      printf() 讓使魔得以表達;
      再也不至於計算正確,卻不懂得回答。

      透過 "" 的包覆,讓使魔懂得這中間的文字,
      是言語,是完整的文字訊息,而不是命令或其它東西。

    • line 6: 使魔的任務結束報告

      伴隨著『無事結束』的代號 0,
      使魔終於能安心歇息了。

      這指令會讓 main() 宣告終結,
      也就是一生的任務結束,可以長眠了。

      傳回的數字則是結束代號。
      通常無事結束是 0,
      其它可能是途中碰上了無法解決的困難,
      導致只能以代號回報失敗原因後中止。

      代號的意義賦予與中止時機,
      全看主人而定。

但是,雖然提到表達、表達,

注意盡量不要讓程式碼內出現中文

否則可能會死得不明不白。
外國人做的東西,
對中文使用者來說時常是個惡夢。
這問題太複雜,改天在其它篇章詳述。

掌握了這些,相信要讓使魔告白已不成問題。
剩下只有告白詞內容而已,
這點就留給大家依喜好自行發揮。
比如說『啊啦今天也想被使魔踩嗎真拿您沒辦法呢主人還是一如既往地變態呢』

既然目標達成,不妨先讓大家自行試試。

使魔調教是非常吃經驗與練習來累積的。

請務必親自動手。
那麼,在此先來個休止符。
請期待下一篇。

  • *註1

    compile (編譯)
    將程式碼轉為可執行檔。
    跟國立編譯館沒有任何關係

    對 C 來說,程式碼只是文字文件,
    必須透過編譯器進行編譯才能夠執行。
    像是把咒文實際執行變成法術生效吧。
    在執行前只是符號罷了。

    有些語言會有直譯的執行方式,
    不需要透過編譯就可以馬上執行。
    那又是另一個故事了,請期待番外篇。

    在面對 C 的時候,記得一定要先編譯就對了。

  • *註2

    預設機能其實相當多,
    但不是每個都會用上;
    像肉搏戰用的使魔,
    就不需要特地搭載音樂或者寫作相關機能。
    當然你還是可以這麼做,沒有問題。

    全部搭載會讓使魔變得很肥,
    反而會阻礙行動,
    所以通常分成一大塊一大塊的機能,
    視需求決定搭載哪一些。

    補充:在 Dev-CPP 以外的環境下,
    也有即使功能全數搭載,
    編譯時也會自動過濾未使用機能的方法。
    由於真正搭載的只有用到的部份,
    這情況下多搭載也不會變肥的。

  • *註3

    header 通常指附加在物件上或正文之前的訊息。
    用在 C 通常稱標頭檔,
    在最開頭便指名要搭載的功能。

    像是郵件或包裹的地址與收件人,
    標記在筆電上的配備資訊等等,
    除了提供簡單快速的介紹和辨識,
    有時也會是必要的情報。

    有試過把 1.jpg 之類的東西,
    改名成 1.txt 過嗎?
    雖然 windows 會警告你,
    這動作可能會導致檔案無法使用,
    而且 windows 會嘗試以文字檔的方式打開它。

    但是拉進小畫家還是可以正常顯示。
    這是因為檔案在圖片內容之前附上的 header,
    就足以讓小畫家認出這是 .jpg 類型的檔案,
    並以開啟 .jpg 的方式去開啟它。