吉安有没有牛排杯:关于C语言问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/05 07:14:03
main()
??{
??int i=1,j=2,k=3;
??if(i++==1&&(++j==3||k++==3))
??printf("%d %d %d\n",i,j,k);
??}
??程序运行后的输出结果是______。
为什么没参与

应该是 2 3 3
解释如下:
i的值经i++==1的表达式后,变为了2;

由于i++==1的表达式为真,所以继结进行(++j==3||k++==3)这个表达式的运算,在该表达式中++j==3的值为真,所以就不进行k++==3的运算了。
因此,j的值变为了3,而k的值没有发生变化..

这道题结合了前后置++运算和逻辑运算顺序问题.

2 3 4

2 3 3 ,||k++==3没有参加程序的运行

2 3 3
运行一下就ok了