Série: C++
cpp
108 linhas
· Atualizado 2026-04-03
variables.cpp
C++/Part1_基礎入門/Ch02_變數與資料型別/variables.cpp
// ============================================================
// Ch02 - 變數宣告與初始化
// 編譯:g++ -std=c++17 -Wall -o variables variables.cpp
// 執行:./variables
// ============================================================
#include <iostream>
#include <string>
int main() {
// ── 1. 變數宣告與初始化的三種方式 ──
std::cout << "=== 初始化方式 ===" << std::endl;
int a = 10; // 複製初始化(copy initialization)
int b(20); // 直接初始化(direct initialization)
int c{30}; // 列表初始化(list/uniform initialization,C++11)
std::cout << "複製初始化 a = " << a << std::endl;
std::cout << "直接初始化 b = " << b << std::endl;
std::cout << "列表初始化 c = " << c << std::endl;
// 列表初始化可防止窄化轉換
// int d{3.14}; // 取消註解會得到編譯錯誤:narrowing conversion
// ── 2. 僅宣告(未初始化)──
std::cout << "\n=== 未初始化的危險 ===" << std::endl;
int uninitialized;
// 未初始化的區域變數有垃圾值,使用它是未定義行為
// 以下輸出的值是不確定的
std::cout << "未初始化的變數值(垃圾值):" << uninitialized << std::endl;
// ── 3. 多個變數同時宣告 ──
std::cout << "\n=== 多個變數宣告 ===" << std::endl;
int x = 1, y = 2, z = 3;
std::cout << "x = " << x << ", y = " << y << ", z = " << z << std::endl;
// ── 4. 不同型別的變數 ──
std::cout << "\n=== 不同型別 ===" << std::endl;
int age = 25;
double height = 175.5;
char grade = 'A';
bool isStudent = true;
std::string name = "小明";
std::cout << "姓名:" << name << std::endl;
std::cout << "年齡:" << age << std::endl;
std::cout << "身高:" << height << " cm" << std::endl;
std::cout << "等級:" << grade << std::endl;
std::cout << "是否為學生:" << std::boolalpha << isStudent << std::endl;
// std::boolalpha 讓 bool 值顯示為 "true"/"false" 而非 1/0
// ── 5. const 常數 ──
std::cout << "\n=== const 常數 ===" << std::endl;
const double PI = 3.14159265358979;
const int MAX_SCORE = 100;
const std::string SCHOOL = "台大";
std::cout << "PI = " << PI << std::endl;
std::cout << "最高分 = " << MAX_SCORE << std::endl;
std::cout << "學校 = " << SCHOOL << std::endl;
// PI = 3.14; // 編譯錯誤!不能修改 const 變數
// ── 6. auto 自動型別推導(C++11)──
std::cout << "\n=== auto 自動推導 ===" << std::endl;
auto num = 42; // int
auto pi = 3.14; // double
auto letter = 'Z'; // char
auto flag = false; // bool
auto message = std::string("Hello"); // std::string
std::cout << "num = " << num << " (int)" << std::endl;
std::cout << "pi = " << pi << " (double)" << std::endl;
std::cout << "letter = " << letter << " (char)" << std::endl;
std::cout << "flag = " << std::boolalpha << flag << " (bool)" << std::endl;
std::cout << "message = " << message << " (string)" << std::endl;
// ── 7. 變數的作用域(Scope)──
std::cout << "\n=== 作用域 ===" << std::endl;
int outer = 100;
std::cout << "外層 outer = " << outer << std::endl;
{
// 內層區塊:可以存取外層變數
int inner = 200;
std::cout << "內層 inner = " << inner << std::endl;
std::cout << "內層存取 outer = " << outer << std::endl;
// 內層可以宣告同名變數,會遮蔽外層(shadowing)
int outer = 999;
std::cout << "遮蔽後 outer = " << outer << std::endl;
}
// inner 在這裡已不存在
// std::cout << inner; // 編譯錯誤!
std::cout << "回到外層 outer = " << outer << std::endl;
// ── 8. 變數命名範例 ──
std::cout << "\n=== 命名風格 ===" << std::endl;
int studentAge = 20; // camelCase
int student_age = 20; // snake_case
const int MAX_SIZE = 100; // SCREAMING_SNAKE_CASE(常數)
std::cout << "camelCase: studentAge = " << studentAge << std::endl;
std::cout << "snake_case: student_age = " << student_age << std::endl;
std::cout << "常數: MAX_SIZE = " << MAX_SIZE << std::endl;
return 0;
}
Artigos relacionados
C++
c
Atualizado 2026-07-21
deviceAlpha.h
deviceAlpha.h — c source code from the C++ learning materials (C++/Mavis_Homework/FinalProject/deviceAlpha.h).
Ler artigo →
C++
c
Atualizado 2026-07-21
finalproject.c
finalproject.c — c source code from the C++ learning materials (C++/Mavis_Homework/FinalProject/finalproject.c).
Ler artigo →
C++
cpp
Atualizado 2026-07-21
finalproject.cpp
finalproject.cpp — cpp source code from the C++ learning materials (C++/Mavis_Homework/FinalProject/finalproject.cpp).
Ler artigo →
C++
c
Atualizado 2026-07-21
deviceAlpha.h
deviceAlpha.h — c source code from the C++ learning materials (C++/Mavis_Homework/Lab8/deviceAlpha.h).
Ler artigo →
C++
c
Atualizado 2026-07-21
lab8.c
lab8.c — c source code from the C++ learning materials (C++/Mavis_Homework/Lab8/lab8.c).
Ler artigo →
C++
cpp
Atualizado 2026-07-21
lab8.cpp
lab8.cpp — cpp source code from the C++ learning materials (C++/Mavis_Homework/Lab8/lab8.cpp).
Ler artigo →