a=(--x==y++)?--x:++y;C语言中这个怎么解释

?:怎么运算的,什么意思,规则是什么
2025-02-27 05:01:13
推荐回答(3个)
回答1:

"?:"是C语言中的条件表达式,根据表达式返回不同的值;

如:c ? a : b,如果c表达式为真,则返回a,假则返回b;


  1. “( )”运算符优先级最大,先计算--x和y(因为这里是y++,先用了y,y再加1)的值是否相等,然后y再加1;

  2. 如果(--x==y++)的返回值为真,则将--x赋值给a;如果为假,则将++y赋值给a

回答2:

a=(--x==y++)?--x:++y;

问号表达式,(--x==y++)?--x:++y;翻译过来就是

if((--x==y++))
{
--x;
}
else
{
++y;
}

所以就是

if((--x==y++))
{
a=--x;
}
else
{
a=++y;
}

回答3:

--x 恒等于y++吗?如果等于a=--x 否则 a=++y