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值没变。说明三元运算符从右往左结合,但是运算还是从左往右。

猜你喜欢

转载自blog.csdn.net/qq_16829085/article/details/83449497
今日推荐