"?:"是C语言中的条件表达式,根据表达式返回不同的值;
如:c ? a : b,如果c表达式为真,则返回a,假则返回b;
“( )”运算符优先级最大,先计算--x和y(因为这里是y++,先用了y,y再加1)的值是否相等,然后y再加1;
如果(--x==y++)的返回值为真,则将--x赋值给a;如果为假,则将++y赋值给a
a=(--x==y++)?--x:++y;
问号表达式,(--x==y++)?--x:++y;翻译过来就是
if((--x==y++))
{
--x;
}
else
{
++y;
}
所以就是
if((--x==y++))
{
a=--x;
}
else
{
a=++y;
}
--x 恒等于y++吗?如果等于a=--x 否则 a=++y