pragma mark 帶參數(shù)的宏定義
pragma mark 概念
/**
宏定義并不會(huì)做任何運(yùn)算, 無(wú)論是有參數(shù) 還是 沒(méi)有參數(shù)都僅僅是在翻譯成0和1之前做 一個(gè)簡(jiǎn)單的"替換"
帶參數(shù)的宏定義注意點(diǎn)
1.一般情況下 建議寫帶參數(shù)的宏,給每個(gè)參數(shù)加上一個(gè)()
2.一般情況下建議寫帶參數(shù)的宏的時(shí)候, 結(jié)果也加上一個(gè)() // 請(qǐng)記住
*/
pragma mark 代碼
#include <stdio.h>
int sum (int v1, int v2)
{
return v1 + v2;
}
/*
define 代表要定義一個(gè)宏
SUM 宏的名稱
(v1,v2) 參數(shù), 注意點(diǎn), 不需要寫數(shù)據(jù)類型
v1 + v2 用于替換的內(nèi)容
宏定義并不會(huì)做任何運(yùn)算, 無(wú)論是有參數(shù) 還是 沒(méi)有參數(shù)都僅僅是在翻譯成0和1之前做 一個(gè)簡(jiǎn)單的"替換"
帶參數(shù)的宏定義注意點(diǎn)
1.一般情況下 建議寫帶參數(shù)的宏,給每個(gè)參數(shù)加上一個(gè)()
2.一般情況下建議寫帶參數(shù)的宏的時(shí)候, 結(jié)果也加上一個(gè)()
*/
#define SUM(v1,v2) v1+v2
// 要求定義一個(gè)帶參數(shù)的宏,用于計(jì)算兩個(gè)變量的乘積
//#define CF(v1,v2) v1*v2
#define CF(v1,v2) (v1)*(v2)
// 要求定義一個(gè)帶參數(shù)的宏,用于計(jì)算某個(gè)數(shù)的平方
//#define PF(v1) (v1)*(v1)
#define PF(v1) ((v1)*(v1))
int main()
{
/*
int a = 10;
int b = 15;
// int res = sum(a, b);
// SUM(a,b) v1 == a v2 == b
// a+b
// int res = a+b;
int res = SUM(a, b);
// printf("res = %i\n",res);
*/
#warning 什么時(shí)候使用宏定義 什么時(shí)候使用函數(shù)
/*
什么時(shí)候用帶參數(shù)的宏定義 什么時(shí)候用函數(shù)
如果函數(shù)內(nèi)部的功能比較簡(jiǎn)單,僅僅是做一些簡(jiǎn)單的運(yùn)算 那么可以使用宏定義,使用宏定義效率更好,運(yùn)算速度更塊
如果函數(shù)內(nèi)部的功能比較復(fù)雜, 不僅僅是一些簡(jiǎn)單的運(yùn)算,那么建議使用函數(shù)
*/
#warning 定義一個(gè)帶參數(shù)的宏,用于計(jì)算兩個(gè)變量的乘積
#warning 1.帶參數(shù)的宏 參數(shù)沒(méi)有加上()
// CF(5 + 5,4+4)
// 5 + 5 * 4 + 4 // 5 + 20 + 4 = 29
#warning 1.帶參數(shù)的宏 參數(shù)加上()
// CF(5 + 5, 4 + 4)
// (5 + 5) *(4 + 4) == (10)*(8)
// int res = CF(5 + 5, 4+4); // 10 * 8 = 80
#warning 2.帶參數(shù)的宏 結(jié)果沒(méi)有加上()
// int res = PF(4);
// PF(2 + 2)
// (2 + 2) * (2 + 2)
// 16 / 16 * 16 == 1 * 16 == 想要的結(jié)果為 16
// PF(v1) / PF(v1) * PF(v1)
// PF(2 + 2) / PF(2 + 2) * PF(2 + 2)
// (2 + 2) *(2 + 2) / (2 + 2) *(2 + 2) * (2 + 2) *(2 + 2)
// 4 * 4 / 4 * 4 * 4 * 4
// 16 / 4 * 4 * 4 * 4
// 16/4 == 4 * 4 == 16 * 4 = 64 * 4 = 256 結(jié)果卻為256
// int res = PF(2 + 2) / PF(2 + 2) * PF(2 + 2);
// 4 / 4 * 4 == 想要的結(jié)果 為 4
// PF(2) / PF(2) * PF(2)
// (2 *2) / (2) * (2) * (2)*(2)
#warning 2.帶參數(shù)的宏 結(jié)果加上()
// PF(2) / PF(2) * PF(2)
// ((v1)*(v1)) / ((v1)*(v1)) * ((v1)*(v1))
// ((2)*(2)) / ((2)*(2)) * ((2)*(2))
// 4 / 4 * 4 == 4 結(jié)果=4 是想要的
int res = PF(2) / PF(2 ) * PF(2 );
printf("res = %i\n",res);
return 0;
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。