|
|
Hello World! |
// my first program in C++
#include <iostream>
#
)開頭的行是由所謂的預處理器讀取和解釋的指令。它們是在程式本身開始編譯之前被解釋的特殊行。在這裡,指令 #include <iostream>
指示預處理器包含一段名為標頭檔案 iostream 的標準 C++ 程式碼,該程式碼允許執行標準的輸入和輸出操作,例如將本程式的輸出(Hello World)寫入螢幕。int main ()
int
)、一個名稱(main
)和一對圓括號(()
)依次構成,括號內可以任選地包含引數。main
的函式在所有 C++ 程式中都是一個特殊的函式;它是程式執行時被呼叫的函式。所有 C++ 程式的執行都從 main
函式開始,無論該函式在程式碼中的實際位置在哪裡。{
和 }
{
)表示 main
函式定義的開始,第 7 行的右大括號(}
)表示其結束。這兩個大括號之間的所有內容都是函式體,它定義了當 main
被呼叫時會發生什麼。所有函式都使用大括號來表示其定義的開始和結束。std::cout << "Hello World!";
std::cout
,它標識了標(standard)準(dard)字(character)符(output)輸出裝置(通常是電腦螢幕)。其次,是插入運算子(<<
),它表示後面的內容被插入到 std::cout
中。最後,引號內的句子("Hello world!"),是插入到標準輸出中的內容。;
)結尾。這個字元標誌著語句的結束,就像英文中的句號結束一個句子一樣。所有 C++ 語句都必須以分號字元結束。C++ 中最常見的語法錯誤之一就是忘記用分號結束語句。//
開頭)。有一行是給預處理器的指令(以 #
開頭)。有一行定義了一個函式(在此例中是 main
函式)。最後,還有一行是以分號結尾的語句(向 cout
插入內容),它位於 main
函式的大括號({ }
)界定的程式碼塊內。
|
|
|
|
;
)來指定的,將其分成不同的行對此目的而言根本不重要。許多語句可以寫在一行,或者每個語句可以單獨佔一行。將程式碼分成不同的行僅僅是為了讓閱讀它的人類覺得更易讀、更清晰,但對程式的實際行為沒有影響。
|
|
Hello World! I'm a C++ program |
std::cout
執行了兩次插入操作。再次強調,將程式碼分成不同的行僅僅是為了提高程式的可讀性,因為 main
函式完全可以有效地定義成這樣:
|
|
|
|
#
開頭的那些)不屬於這個通用規則,因為它們不是語句。它們是在正式編譯開始之前由預處理器讀取和處理的行。預處理器指令必須單獨佔用一行,並且因為它們不是語句,所以不必以分號(;
)結尾。cout
而不是 std::cout
的情況。兩者都指向同一個物件:前者使用其非限定名稱(cout
),而後者則直接在名稱空間 std
中對其進行限定(如 std::cout
)。cout
是標準庫的一部分,標準 C++ 庫中的所有元素都在一個所謂的名稱空間(namespace)中宣告:即名稱空間 std
。std
名稱空間中的元素,程式要麼對庫中元素的每一次使用都進行限定(就像我們透過在 cout
前加上 std::
所做的那樣),要麼引入其元件的可見性。引入這些元件可見性的最典型方式是透過 using 宣告:
|
|
std::
字首)訪問 std
名稱空間中的所有元素。cout
進行非限定使用,如下所示:
|
|
Hello World! I'm a C++ program |
std
名稱空間元素的兩種方式(顯式限定和 using 宣告)在 C++ 中都是有效的,並且產生完全相同的行為。為簡單起見並提高可讀性,這些教程中的示例將更常用後一種帶 using 宣告的方法,但請注意,顯式限定是保證永遠不會發生名稱衝突的唯一方法。![]() 編譯器 | ![]() 目錄 | ![]() 變數與型別 |
註釋
如上所述,註釋不影響程式的操作;然而,它們提供了一個重要的工具,可以直接在原始碼中記錄程式的功能和執行方式。C++ 支援兩種註釋程式碼的方式:
第一種,稱為行註釋,會忽略從雙斜槓符號(
//
)出現處到該行末尾的所有內容。第二種,稱為塊註釋,會忽略從/*
字元到首次出現的*/
字元之間的所有內容,並且可以包含多行。讓我們為我們的第二個程式添加註釋:
如果在程式的原始碼中包含了註釋,但沒有使用註釋字元組合
//
、/*
或*/
,編譯器會把它們當作 C++ 表示式,這極有可能導致編譯失敗並出現一個或多個錯誤資訊。