#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);
}
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。