关于c++的基础知识问题!!

设有程序段如下:
int x=1, y=3, z=5 , a=0;
a= x--? y--: z--;
则执行该程序段后,下列说法不正确的是( )。

A.a的值为3
B.x的值为0
C.y的值为2
D.z的值为4
为啥选d啊,d不是对的吗

D.z的值为4 不正确
x=1 为真值 只会执行?之后的 y--,:之后的 z-- 不会执行
z还是5

int x=1, y=3, z=5 , a=0;
a= x--? y--: z--;
等价于
if(x--)
a = y--;
else
a = z--;
x--这里,--在x后面,所以先判断if(x),x=1,if(x)成立,执行x--,x变为0,执行a = y--;(先执行a=y;a的值是3,然后执行y--,y的值变成2);else不执行,所以z的值不变。

d怎么可能对呢?z--不会执行,三目运算符由于x--先判断x,再x减去1,所以判断时x为1,条件成立,a=y--啊。所以z还是5