1. 程式人生 > >C語言 三目運算子結合與運算方向問題

C語言 三目運算子結合與運算方向問題

百度百科:三目運算子,又稱條件運算子,是計算機語言(c,c++,java等)的重要組成部分。它是唯一有3個運算元的運算子,所以有時又稱為三元運算子。一般來說,三目運算子的結合性是右結合的。

對於條件表示式b ? x : y,先計算條件b,然後進行判斷。如果b的值為true,計算x的值,運算結果為x的值;否則,計算y的值,運算結果為y的值。一個條件表示式絕不會既計算x,又計算y。條件運算子是右結合的,也就是說,從右向左分組計算。

驗證

int main()
{
	int a=3,b=3,c=1,k=4;
//	printf("%d\n",k>a?2: c<b?(--k):++k);  //2
//	printf("%d\n",k);		      //4
	
	printf("%d\n",k<=a?2: c<b?(--k):++k); //3
	printf("%d\n",k);                     //3
	
	
}

如果讀取順序為從右到左,k應該從4自減為3,從輸出結果可以看出k值沒變。說明三元運算子從右往左結合,但是運算還是從左往右。