三元操作符 ?和:直接可以看成是 ?就是if语句 :简单的翻译成else语句,但是需要前后放上执行程序。

(1)举例说明:A > B ? A > C ? A : C : B > C ? B : C;这条语句代表什么意思呢?我们把if和esle带入进入看

	if(A>B)
	{
		if(A>C)
			{执行程序A}
		else
			{执行程序C}
	}
	else
	{
	 执行程序
		if  (B>C) 
		{执行程序B}
		else
		{执行程序C}
	}

(2)不过这样看上去还是太复杂,我们把程序分类,加上括号后调理看上去就简单多了 (A > B ?)( A > C ? A : C ): (B > C ? B : C)

(3)下面我们分析一个比较复杂的宏定义 #define SHIF16(a) ((a)&0x0001?0: (a)&0x0002?1: (a)&0x0004?2: (a)&0x0008?3:
(a)&0x0010?4: (a)&0x0020?5: (a)&0x0040?6: (a)&0x0080?7:
(a)&0x0100?8: (a)&0x0200?9: (a)&0x0400?10:(a)&0x0800?11:
(a)&0x1000?12:(a)&0x2000?13:(a)&0x4000?14: 15)

				我们看后半段	((a)&0x0001?0: (a)&0x0002?1: (a)&0x0004?2: (a)&0x0008?3:\
                   (a)&0x0010?4: (a)&0x0020?5: (a)&0x0040?6: (a)&0x0080?7:\
                   (a)&0x0100?8: (a)&0x0200?9: (a)&0x0400?10:(a)&0x0800?11:\
                   (a)&0x1000?12:(a)&0x2000?13:(a)&0x4000?14: 15)				
										 
										 
										 因为&的运算符的优先级要比:和?都要高,所以我们把(a)&0x0001看成一个整体A0,代表最低位第0位是真还是假,以此类推;
										 就变成:(A0?0:A1?1:A2?2:A3?3:A4?4:A5?5:A6?6:A7?7:A8?8:A9?9:A10?10:A11?11:A12?12:A13?13:A14?14:15)
										 这个太难看懂了
										 我们就取三个分析下
										 (A0?0:A1?1:A2?2:3)如果是这条语句,那么是什么意思呢?
										 我们用括号法来分析下:
										(A0?)     0     :   {(A1?)1: [(A2?)2:3 ] }
										 
										 if(A0)//A0是真
										 {
											//那就是0 
										 }
										 else
										 {
											  if(A1)
												{
												  //那就是1
												}
												else
												{
													if(A2)
													{
														//那就是2
													}
													else
													{
														//那就是3
													}
												}
										 
										 }
				注释:
										  (a)&0x0001 ->是最低位
										  (a)&0x0002 ->是最第1位
										  (a)&0x0004 ->是最第2位
											(a)&0x0008 ->是最第3位
											(a)&0x0010 ->是最第4位
											(a)&0x0020 ->是最第5位
											.
											.
											.
											(a)&0x4000->是最第14位

!!!!!!!!!!!!具体这个宏定义是啥作用评论区来说说吧!!!!!!!