iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
佛心分享-IT 人自學之術

C++探險家系列 第 13

Day 13 前置處理器

  • 分享至 

  • xImage
  •  

首先,先介紹前置處理器是甚麼?
前置處理器是編譯過程中的一個階段,用於在代碼編譯前對其進行處理。它的主要功能包括替換、文件包含和條件編譯。通過替換,前置處理器可以用簡單的標識符替代複雜的代碼片段;文件包含允許將多個源文件合併成一個;條件編譯則根據不同的條件選擇性編譯代碼段。這些功能有助於提高代碼的靈活性和可維護性。

程式小練習(變數交換):

#include <iostream>
#define SWAP(x,y,t) (t=x, x=y, y=t)
using namespace std;
int main(void)
{
    int x=3,y=4,temp;
    SWAP (x,y,temp);
    cout<<"x = "<<x<<"y = "<<y<<endl;
    return 0 ;
}

小講解:
這段程式碼定義了一個SWAP(x, y, t)用來交換兩個變數 x和 y的值。temp用作臨時變數,宏的作用是將 x的值賦給 t,y 的值賦給 x,最後將 t的值賦給 y。在 main函數中,x和 y分別初始化為 3和 4,然後使用 SWAP 交換它們的值。結果輸出 x = 4和y = 3。

在C/C++中,以下預處理指令用於條件編譯和錯誤處理:
#if:檢查條件是否為真,決定是否編譯代碼塊。
#else:與 #if 搭配,條件不成立時編譯對應代碼。
#elif:提供額外條件選擇。
#ifdef:檢查宏是否已定義,已定義時編譯對應代碼。
#ifndef:檢查宏是否未定義,未定義時編譯對應代碼。
#error:生成編譯錯誤信息,提示錯誤或不符合條件。

程式小練習一(計算圓面積):

#include <iostream>
#define A(r) (double)(r)*(r)*3.1415
using namespace std;
int main (void)
{
    int r;
    cin>>r;
    cout<<A(r)<<endl;
    return 0;
}

小講解:
A(r)接受一個半徑 r,計算公式為 π * r^2,這裡使用了 3.1415 近似值。main 函數讀取一個整數 r代表圓的半徑,並輸出計算得到的圓面積。
程式小練習二(圓周長、圓面積、圓球面積程式):

#include <iostream>
#define round
#define volume
#define R(r) (double)2*(r)*3.1415
#define A(a) (double)(r)*(r)*3.1415
#define V(v) (double)4/3*(r)*(r)*(r)*3.1415
using namespace std;
int main(void)
{
    int r;
    cin>>r;
    #if defined round
     cout<<R(r)<<endl;
    #endif
    #if defined area
     cout<<A(r)<<endl;
    #endif 
    #if defined volume
     cout<<V(r)<<endl;
    #endif 
     return 0;
}

小講解:
R(r)計算圓周長,A(a)計算圓面積,V(v)計算球體體積。程式會計算並顯示圓周長和球體體積。

!!此篇章是看第一次學C++就上手第二版第十章跟著做學習!!


上一篇
Day 12 字串輸入練習
下一篇
Day 14 結構、聯合與列舉
系列文
C++探險家30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言