MIN(a<4?a:5, b)
鐪嬭搗鏉ヤ篃娌″暐闂錛屽疄闄呮墽琛屼竴涓嬪彂鐜幫紝緇撴灉鏄?錛屽亸紱婚鏈燂紒浜嬪疄涓婏紝瀹忓嵆浣垮崟綰殑浠g爜灞曞紑錛屽綋浣犲睍寮涓婇潰鐨勫紡瀛愪箣鍚庝細(xì)鍙戠幇錛屽疄闄呮墽琛岀殑浠g爜鏄?br />
a<4?a:5<b?a<4?a:5:b
瀵逛簬涓鐩寸敤鎷彿鏉ヨВ鍐充紭鍏堢駭闂鐨勬垜鏉ヨ錛岃繖縐嶅睍寮瀹屽叏鏃犳硶鐞嗚В錛屼簬鏄弬鐪嬩簡鍐呮牳浠g爜錛屽彂鐜版洿瀹夊叏鐨勫啓娉曚負(fù)錛?br />
#define MIN(A,B) (A)<(B)?(A):(B)
榪欑鍐欐硶瑙勯伩浜嗕護浜哄帉鎭剁殑浼樺厛綰ч棶棰橈紒鏈互涓鴻繖鏍峰氨瀹屾垚浜嗕竴涓畨鍏ㄧ殑瀹忓畾涔夛紝浣嗘槸浜嬪疄涓婅繕鏈夊叾浠栭棶棰橈紒
float a = 1.0f;
float b = MIN(a++, 1.5f);
printf("a=%f, b=%f",a,b);
紲炵鐨刟++錛屽悓鏍鋒寜鐓у垰鎵嶇殑鎬濊礬灞曞紑錛屽洜涓哄畯閲岄潰浼?xì)鏈変袱娆鐨勫睍寮錛屾墍浠++灝嗚鎵ц涓ゆ錛屽啀嬈″亸紱婚鏈熴傚浜庤繖縐嶆儏鍐碉紝鎴戜滑闇瑕佺敤鍒頒竴涓狦NU C鐨勮祴鍊兼墿灞曪紝鍗充嬌鐢?{...})鐨勫艦寮忋傝繖縐嶅艦寮忕殑璇彞鍙互綾諱技shell錛屽湪欏烘鎵ц涔嬪悗錛屼細(xì)灝嗘渶鍚庝竴嬈$殑琛ㄨ揪寮忕殑璧嬪間綔涓鴻繑鍥炪備婦涓畝鍗曠殑渚嬪瓙錛屼笅闈㈢殑浠g爜鎵ц瀹屾瘯鍚巃鐨勫間負(fù)3錛岃屼笖b鍜宑鍙瓨鍦ㄤ簬澶ф嫭鍙烽檺瀹氱殑浠g爜鍩熶腑錛?br />
int a = ({
int b = 1;
int c = 2;
b + c;
});
緇撴灉鏄?/ => a is 3
鍩轟簬榪欑鐗規(guī)э紝鎴戜滑鍙互鍦ㄥ畯閲岄潰涓烘瘡涓紶鍏ョ殑鍙傛暟榪涜涓涓嫹璐濓紝鐒跺悗鍐嶅鎷瘋礉鍚庣殑鍙傛暟榪涜瀹為檯鐨勬瘮杈冭繍綆楋紝閭d箞鏈緇堝疄鐜頒簡涓涓瘮杈冨畨鍏ㄧ殑鏈灝忓兼瘮杈冪殑瀹忓畾涔夛細(xì)
#define min(x,y) ({ \
typeof(x) __min1 = (x); \
typeof(y) __min2 = (y); \
(void) (& __min1 == & __min2); \
__min1 < __min2 ? __min1 :min2})
鏈鍚庤繖涓姝ヨ煩璺冩湁鐐瑰ぇ浜嗭紝棣栧厛鏄?typeof 浣滅敤鏄緱鍒板弬鏁扮殑綾誨瀷錛屽叾嬈℃槸(void) (& __min1 == & __min2); 榪欎釜紲炵鐨勫啓娉曟槸涓轟簡楠岃瘉浜岃呯殑綾誨瀷鏄惁涓鑷達(dá)紝褰撶劧澶栦晶鎴戜滑紜疄鐢ㄤ簡GNU鐨勬墿灞?{...})銆?br />
鍐欏埌榪欓噷錛屾秹鍙婂埌浜嗗彟澶栦袱涓棶棰橈紝GNU鎵╁睍鏄暐錛熷彟澶栨垜浠敤瀹忔槸涓轟簡鑺傜渷浠g爜錛屽悓鏃朵負(fù)浜嗙渷鍘諱竴浜涘皬鍑芥暟鐨勫嬈¢噸澶嶈皟鐢ㄧ殑鍙傛暟鍏ユ爤闄嶄綆鎬ц兘鐨勯棶棰橈紝閭d箞鍐呰仈鍑芥暟涔熸湁榪欐牱鐨勬晥鏋滐紝浠涔堟槸鍐呰仈鍑芥暟鍛紵