有关C语言的问题

我是C语言初学者,有道题想请教:
设有说明int x=0,y=0;
则执行if(x++) y=1+x;
else y=2+x;
后,变量y的值是多少?

我自己做了编程:
main()
{ int x=0,y=2;
if(x++) y=1+x;
else y=2+x;
printf(y=%d\n”,y);
}
运行结果是y=3
不知道编程中有没有错误,如果是正确的,但我还是不知道答案是怎么来的。特别是if(x++) ,那x=x+1,x的值应该是1,而表达式x++的值应该是0,那样的话if(0) y=1+x;else y=2+x;到最后怎么结果是3的,真的想不通。
有没有C语言高手可以给我具体的分析一下,我会非常感谢的。

if是个判断语句,如果后面为0则为假
首先程序判断到if(x++)时,x=0,为假,执行后面的y=2+x,同时因为是x++,x自加一,x=1,由此y=2+1

编程如下

main()
{ int x=0,y=0;
if(x++)
y=1+x;
else
y=2+x;
printf(“y=%d\n”,y);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-02-28
if(x++)先判断x是否为0,x=0,条件不成立,x++,x=1,
转向else,y=2+x=2+1=3;
第2个回答  2009-02-28
表达式x++的值是0,但是这时候x++会执行
if(x++),先将x的值转为表达式的值,在执行x++,(与++x相反),所以接下来执行 else y=2+x; (此时x=1)
第3个回答  2009-02-28
你的程序没有错误啊

if(x++) 这时判断if条件时x=0,要跳转到else执行;判断完之后x=1

这就是=3的原因
第4个回答  2009-02-28
if(x++)是判断语句,意思是先判断x值1或0,然后再使x=x+1,所以执行完该语句后x=1;又由于判断为假,所以执行y=2+2,得y=3.