C++宏和函式的比較

Station發表於2024-10-25

在上一篇隨筆中,我提到宏和函式是很相似的,那麼在這篇中我會透過例項來體會宏和函式的異同。
例項:分別用函式和帶參的宏,從三個數中找出最大的數
程式碼:

點選檢視程式碼
#include<bits/stdc++.h>
using namespace std;
#define Com(a,b,c) {printf("%.3f\n",max(a,max(b,c)));}
void compare(float a,float b,float c);
int main()
{
    float a,b,c;
    cin>>a>>b>>c;
    compare(a,b,c);
    Com(a,b,c);
    return 0;
}
void compare(float a,float b,float c){
    cout<<fixed<<setprecision(3)<<max(a,max(b,c))<<endl;
}
在程式碼中我們能更直觀體會到函式和宏的相似性。同時我們注意到,儘管max(a,b)函式只能比較兩個數的大小,但可透過套用變形為max(a,max(b,c))從而達到比較三個數的效果。

相關文章