c语言初学者的小问题,帮一下忙

为什么答案是211?
#include 
int main()
{
    int c, x, y;
    x = 1;
    y = 1;
    c = 0;
    c = x++ || y++;;
    printf("\n%d%d%d\n", x, y, c);
}


211
赋值运算
为什么?

0、null、NaN、undefined、"" 转成布尔值为false 其他则一律返回true;
然后就看代码 x++ 此时还是1 但是|| 或 --------一真则真 y++就不计算了
输出的时候 x在上一步++了 所以 x成了2 y是1 上面的x++是true 赋值给了c c就是1了

因为x++了所以x=2,x++为真 y++不执行 y还是1,c=x++||y++结果为真也是1

因为x++,x为1,所以或的左侧表达式为真,所以右侧y++是不运行的
这样x最后加1,使得x=2,而c=一个逻辑表达式的结果,逻辑表达式为真,c就是1
y++不执行,所以y还是1
最终就是211

x++自增变成2,或运算左边结果为真,代表或运算表达式的结果就是真,那么不管右边还有多少内容都不会再去执行,所以y++语句是没被执行的,值还是1,c的值就是或运算表达式的值,真为1,假为0。