main() {int i=1;j=2;=3; if(i++==1&&(++j==3//k++==3)) printf("%d%d%d",i,j,k); }

运算结果是什么,解释一下

if(i++==1&&(++j==3||k++==3))
1、这里涉及运算符优先级,++高于关系运算符==高于逻辑运算符&&高于逻辑运算符||
2、同时在计算&&时,系统先判断前面表达式真假,如果是假,&&后面的表达式不参与计算
计算||时,系统先判断前面表达式真假,如果是真,||后面的表达式不参与计算
3、自增运算++i是先让i+1,表达式的值是i+1,而i++表达式的值是i,然后i+1
根据上面原则,不难判断i++==1将返回真,同时i=2,这样系统开始判断(++j==3||k++==3)
先判断++j==3,返回真,j=3,那么k++==3系统不计算,k仍然是3,
则打印出i=2,j=3,k=3
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-02-14
main() {
int i=1;j=2;k=3; //////////////////////////////////////初始化
if(i++==1&&(++j==3||k++==3)) /////////////i++==1,先判断i==1为true,然后i的值加1,此时i=2;下面判断语句(++j==3||k++==3),语句++j==3是先把j的值加1,j=3,然后在判断j==3为true;又因为逻辑或||,当||左边的表达式为true时,右边的表达式不执行,整个表达式(++j==3||k++==3)直接返回true,因此k的值没变化k=3
printf("%d%d%d",i,j,k); //////////////////////////////////////////最后输出:233
}
第2个回答  2011-02-13
题错了,int里应该是K等于3吧,少了一个K,结果应该是1,2,3吧

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网