A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

int x =1,y=1;
if(x++==2 & ++y==2)
{
        x=7;
}

这道题为什么x=2,y=2?x为false也参与运算吗

9 个回复

倒序浏览
&运算符是不论左边true还是false都会执行右边,,,如果你把&改成&&就不会执行右边了
回复 使用道具 举报
&是逻辑与运算符。楼上是正解,另外,补充一下:&运算符的运算规则为两个操作数都是true,结果才为true.
回复 使用道具 举报
“&”逻辑运算符,两边表达式都执行,且都为true,结果才为true,“&&”逻辑运算符表示,当第一个表达式为false时,就不会去判断第二个表达式,可节省计算机的判断次数
回复 使用道具 举报
因为是&,和&&结果是一样,但参与运算的话&&会有短路效果,而&左边为false右边一样执行,所以右边也执行了
回复 使用道具 举报
注意观察细节 这个题目真的不难
回复 使用道具 举报
x为false也参与运算吗  .是的,参与运算.
回复 使用道具 举报
int x =1,y=1;
if(x++==2 & ++y==2) //  x++==2,x先与x比较x==2是false,然后在x++,而++y是先自增 y=2再比较y==2是true;&不管前面的表达式是真还是假都会运算后面的表达式,而&&如果前面的表达式是假,后面的表达式是不会参与运算的;
{
        x=7;
}


回复 使用道具 举报
你应该用短路与符号 这样前面为false时后面就不会执行了 用&的话整个程序都会执行完 不管你前面是false还是true
回复 使用道具 举报
这个左边是false  右边是true  因为是单与 所以两边都执行 , 赋值后的x=2 y=2
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马