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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 天道酬勤_||淡腾 中级黑马   /  2014-5-1 22:34  /  1704 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 天道酬勤_||淡腾 于 2014-5-8 13:02 编辑

   if (i<50&i>20);    和if (i<50&&i>20);有什么区别?

10 个回复

倒序浏览

回帖奖励 +1

对于bool操作数,& 计算操作数的逻辑“与“;也就是说,当且仅当两个操作数均为 true 时,其结果才为 true。不过对于a && b, 如果 a 为 false,则不计算 b,结果都将是false。
回复 使用道具 举报
  1. #region 在当前的例子中,&和&&作用一样
  2.             int i = 1;
  3.             int i2 = 1;

  4.             if (i == 1 & i2 == 1)
  5.             {
  6.                 Console.WriteLine("&: i == 1 且 i2 == 1");
  7.             }

  8.             if (i == 1 && i2 == 1)
  9.             {
  10.                 Console.WriteLine("&&: i == 1 且 i2 == 1");
  11.             }
  12.             #endregion

  13.             // &还有另外的作用:
  14.             // 对于整型,& 计算操作数的逻辑按位“与”。仅当两个操作位都为1时结果才是1
  15.             // 请仔细观擦如下代码
  16.             int j = 12;         // 00001100
  17.             int j2 = 10;        // 00001010
  18.             int j3 = j & j2;    // 00001000
  19.             Console.WriteLine("j3 = {0}", j3);
复制代码
同为新人,可能不能回答得尽善尽美。如果有问题请找我讨论。

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
  1. // 对了,正如2楼所说,&&使用“短路”模式操作,
  2.             // 例如在i == 1 && i2 == 1这条表达式中,i == 1先被求值,如果值为假,那么就没必要(也不会)对 i2 == 1求值(无论i2 == 1的值为真或假,i == 1 && i2 == 1都为假)
  3.             // 同样,||运算符在确认第一条表达式为真后,也不会对第二条表达式求值,因为这没必要。
  4.             // 而&运算符会计算两个表达式,与第一条表达式的值无关。
复制代码

回复 使用道具 举报
你可以参考哈这个帖子
http://bbs.itheima.com/thread-116291-1-1.html
回复 使用道具 举报
本帖最后由 一片白 于 2014-5-4 16:03 编辑

    二元运算符 (&) 为整型和 bool 类型预定义了二进制 & 运算符。    对于整型,& 计算操作数的按位“与”。
    对于 bool 操作数,& 计算操作数的逻辑“与”;也就是说,当且仅当两个操作数均为 true 时,其结果才为 true。         
    条件“与”运算符 (&&) 执行布尔操作数的逻辑“与”运算,但如有必要,只计算第二个操作数。
    它与二元运算符 (&)很像,不同的是,如果 x 为 false,则不计算 y(因为不论 y 为何值,与操作的结果都为 false)。这被称作为“短路”计算。

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
& 叫做逻辑与操作符,也叫按位操作运算符, && 叫做条件与操作符。
回复 使用道具 举报
具体分析   if (i<50&i>20);    和if (i<50&&i>20)第一个是要将 i 的数值换成二进制再运算,结果应该是和第二个一样  不过要是 if(2 & 3)和 if (2 && 3)就不一样了  2的二进制是10, 3的二进制是11,按位与运算之后结果是 10 ,条件与之后结果是true



评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
‘&’无论条件是否满足,两个条件都会执行,‘&&’如果前面一个为false,则直接返回false,后面一个就不执行了
  1. int i = 0, j = 1;
  2.                 if (i > 0 & j ++ > 0) {
  3.                         //首先执行i>0为false,然后还会继续执行j++>0,返回false,结果j为2。
  4.                 }
  5.                 Console.WriteLine(j);
  6.                 int m = 0, n = 1;
  7.                 if (m > 0 && n ++ > 0) {
  8.                         //首先执行m>0为false,就不会再继续执行n++>0,直接返回false,结果n还是1。
  9.                 }
  10.                 Console.WriteLine(n);
复制代码
回复 使用道具 举报
&  位运算符 处理二进制数据的 &&逻辑运行符 进行判断的
回复 使用道具 举报
&是位运算,结果为数值,&&是与||相反的关系运算符,结果一般为布尔值。
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马