日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

18.用宏定义实现 得到两个数的最值

發(fā)布時間:2025/3/21 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 18.用宏定义实现 得到两个数的最值 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

使用兩種宏定義的方法實現(xiàn) 得到兩個數(shù)的最小值和最值


方法一: 利用三重條件運算符

#include <stdio.h> #define MIN(A,B) ( (A) > (B) ? (B) : (A) ) #define MAX(A,B) ( (A) > (B) ? (A) : (B) ) int main(void) {printf("%d\n",MIN(12,334));printf("%d\n",MAX(12,334));return 0; }

值得關(guān)注的是:
?? 1 .? 宏定義的變量在引用的時候,用 ()括起來,防止預(yù)處理器展開的錯誤。
?? 2 . (a > b ??? action1 :? action2 ) 這樣的方式和 if —else 結(jié)果一樣,但他會使得編譯器產(chǎn)生更優(yōu)化的代碼,這在嵌入式編程中比較重要。


方法二: typeof 關(guān)鍵字

#include <stdio.h>#define MIX(X,Y) ({\typeof(X) x_ = (X);\typeof(Y) y_ = (Y);\(x_< y_)? x_:y_;\ }) #define MAX(X,Y) ({\typeof(X) x_ = (X);\typeof(Y) y_ = (Y);\(x_>y_)? x_:y_;\ })int main(int argc, char const *argv[]) {int num1,num2;printf("input two numbers:");scanf("%d %d",&num1,&num2);printf("mix is %d,max is %d\n",MIX(num1,num2),MAX(num1,num2));return 0; }

值得借鑒的是:
?
? 1 . typeof? 關(guān)鍵字 用于獲得變量的數(shù)據(jù)類型 。
?
? 2 . 宏定義的實現(xiàn),用 { } 作為宏整體,里面是一個代碼塊,語句用 ; 隔開 。
?
? 3 . 當(dāng)宏的實現(xiàn)長度很長的時候,使用換行符??? \? 換到下一行 。
?
? 4 . 使用輸入數(shù)據(jù)的類型定義局部變量 x_ 和 y_ 實現(xiàn)對原始數(shù)據(jù)的保護。
?
? 5 . 宏實現(xiàn),不能用 ; 結(jié)尾

?

總結(jié)

以上是生活随笔為你收集整理的18.用宏定义实现 得到两个数的最值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。