C++ 常數/文字

你好,未來的程序员!今天,我們將踏上一段令人興奮的旅程,探索 C++ 的常數和文字世界。別擔心這些術語聽起來有點嚇人 - 到了這堂課結束時,你將會像專家一樣輕鬆地使用它們!讓我們開始吧!

C++ Constants/Literals

常數和文字是什麼?

在我們深入細節之前,先來了解常數和文字是什麼。把它們想像成你代碼中的“不可變”元素 - 如一周的天數或π的值。它們是你可靠的夥伴,無論你的程序中發生什麼,它們都不會改變。

整數文字

我們從熟悉的東西開始 - 數字!在 C++ 中,當我們直接在代碼中寫下一個整數時,我們稱之為整數文字。這就像在紙上寫下一個數字一樣 - 簡單直接。

int myAge = 25;
int numberOfPlanets = 8;
int negativeNumber = -10;

在這些例子中,25、8 和 -10 都是整數文字。它們只是那裡,作為數字存在,沒有小數點或其他花哨的東西。

但等等,還有更多!C++ 讓我們可以用不同的數字系統來寫整數文字:

int decimalNumber = 42;     // 十進制(基數 10)
int octalNumber = 052;      // 八進制(基數 8)- 以 0 開頭
int hexNumber = 0x2A;       // 十六進制(基數 16)- 以 0x 開頭
int binaryNumber = 0b101010;// 二進制(基數 2)- 以 0b 開頭(C++14 之後)

別擔心八進制、十六進制或二進制看起來令人困惑。現在,只需知道它們是表示同一數字的不同的方式。這就像說不同的語言 - "forty-two"、"cuarenta y dos" 和 "quarante-deux" 都意味著同一件事!

浮點文字

現在,讓我們在混合中加入一些小數點!浮點文字是帶有小數點或科學記數法的數字。

float pi = 3.14159f;
double avogadroNumber = 6.022e23;
long double veryPreciseNumber = 1.23456789L;

在這裡,3.14159f 是一個 float 文字(注意末尾的 'f'),6.022e23 是一個 double 文字(e23 意味著 ×10^23),而 1.23456789L 是一個 long double 文字(注意末尾的 'L')。

布爾文字

布爾文字是最簡單的 - 只有两个!

bool isAwesome = true;
bool isBoring = false;

就這些!只是 truefalse。它們就像是編程世界的 "是" 和 "否"。

字符文字

字符文字代表單個字符,並用單引號括起來。

char firstInitial = 'J';
char newline = '\n';
char tab = '\t';

最後兩個例子顯示特殊字符:'\n' 表示新行,'\t' 表示制表符。這些被稱為轉義序列。

字符串文字

字符串文字是被雙引號括起的字符序列。

std::string greeting = "Hello, World!";
std::string quote = "To be, or not to be, that is the question.";

記住,字符串使用雙引號,而單個字符使用單引號!

定義常數

現在我們知道了文字,讓我們看看如何使用它們來創建常數 - 在我們的程序中不會改變的值。

#define 預處理器指令

定義常數的一種方法是使用 #define 預處理器指令:

#define PI 3.14159
#define MAX_STUDENTS 30

// 使用
double circleArea = PI * radius * radius;
if (numberOfStudents > MAX_STUDENTS) {
std::cout << "Class is full!";
}

define 指令告訴編譯器在編譯代碼之前將每個 PI 替換為 3.14159,將 MAX_STUDENTS 替換為 30。

const 關鍵字

定義常數的一種更現代且推薦的方法是使用 const 關鍵字:

const double PI = 3.14159;
const int MAX_STUDENTS = 30;

// 使用與 #define 相同

const 關鍵字告訴編譯器這些變量在初始化後不能被更改。

結合所有內容

讓我們用一個小程序來總結一下,該程序使用了各種常數和文字:

#include <iostream>
#include <string>

#define GAME_NAME "C++ Adventure"

int main() {
const int MAX_LEVEL = 100;
const double XP_MULTIPLIER = 1.5;

int currentLevel = 1;
double currentXP = 0.0;
bool hasCompletedTutorial = false;
char playerRank = 'D';
std::string playerName = "Newbie";

std::cout << "Welcome to " << GAME_NAME << "!" << std::endl;
std::cout << "Player: " << playerName << std::endl;
std::cout << "Level: " << currentLevel << "/" << MAX_LEVEL << std::endl;
std::cout << "XP: " << currentXP << std::endl;
std::cout << "Rank: " << playerRank << std::endl;
std::cout << "Tutorial completed: " << (hasCompletedTutorial ? "Yes" : "No") << std::endl;

return 0;
}

這個程序使用了我們討論過的所有類型的常數和文字。它使用 #define 定義遊戲名稱,使用 const 設置最大等級和 XP 倍數,並使用各種文字來初始化玩家數據。

結論

恭喜你!你已經踏出了進入 C++ 常數和文字世界的第一步。記住,這些是你程序中的積木 - 你將用來創造驚奇事物的不可變值。隨著你編程旅程的繼續,你會發現每天都會使用這些概念。持續練習,保持好奇心,並祝編程愉快!

文字類型 示例 描述
整數 42, -10, 0, 1000 整數
八進制 052, 077 基數 8 的數字(以 0 開頭)
十六進制 0x2A, 0xFF 基數 16 的數字(以 0x 開頭)
二進制 0b101010 基數 2 的數字(以 0b 開頭,C++14 之後)
浮點 3.14, 2.5f, 1e10 帶小數點的數字或科學記數法
布爾 true, false 邏輯值
字符 'A', '\n', '\t' 單個字符或轉義序列
字符串 "Hello", "C++" 字符序列

Credits: Image by storyset