例如if(a==0&&b==0)和if(a==0&b==0)的区别是什么啊  有点混住了。。

解决方案 »

  1.   

    &&是条件与运算,表示a等于0并且b也等于0,条件就成立;
    &是位逻辑与运算,位逻辑与运算将两个运算对象按位进行与运算。与运算的规则:1与1等于1,1与0等于0。
    比如:10010001(二进制)&11110000等于10010000(二进制)。
      

  2.   

    那这个&不就是和||一样的吗?有区别不?
      

  3.   

    逻辑AND: true && false : false
    按位AND: 1001 0110 & 1111 1111 : 1001 0110 (二进制位)
      

  4.   

    经过测试-->
      没什么区别,只不过&&在C中比较专业点~
      

  5.   

    &是一个二进制位的运算,||还是一个关系运算符可以理解位或者,建议你好好的把书看一下,做几个测试,理解关系运算和逻辑运算的不同.
      

  6.   

    ||可是逻辑或: true || false : true
    |按位或: 1001 0110 | 1111 1111 : 1111 1111 (二进制位)
      

  7.   


    在LZ举的例子中没有区别。但在其他时候可以有区别。区别就在于:
     if (A && B)  如果 A 为 false ,整个表达式就为 false,不再计算 B 的值了。 if (A & B)   如果 A 为 false ,整个表达式就为 false,但还要计算 B 的值。如果 B 是有副作用的表达式就有区别了。如:int i = 5;
    if (false && ++i == 0)  // i 保持为 5
    if (false & ++i == 0)   // i 变为 6
      

  8.   

    using System;class Program
    {    
      static void Main()
      {
        int i = 5;
        if (false && ++i == 0) {} 
        Console.WriteLine(i);     // i 保持为 5
        if (false & ++i == 0)  {} 
        Console.WriteLine(i);     // i 变为 6
      }
    }
      

  9.   

    || 和 | 的区别也是同样道理。&& 和 || 是逻辑运算符,有“短路”效果,从左到右计算,只要能确定整个表达式的真假,就不再计算右边的东东了。而 & 和 | 是位运算符,用于布尔值时,没有“短路”效果,总是要计算完整个表达式。
      

  10.   

    请参考在线MSDN:http://msdn.microsoft.com/zh-cn/library/2a723cdk.aspxC# 语言参考
    && 运算符(C# 参考)条件“与”运算符 (&&) 执行其 bool 操作数的逻辑“与”运算,但仅在必要时才计算第二个操作数。备注操作x && y 对应于操作x & y 不同的是,如果 x 为 false,则不计算 y(因为不论 y 为何值,“与”操作的结果都为 false)。这被称作为“短路”计算。
      

  11.   

    &&、|| 两边只能是bool类型&、| 两边可以是bool类型或者是数值类型
      

  12.   

    & 运算符既可作为一元运算符也可作为二元运算符。一元 & 运算符返回操作数的地址(要求 unsafe 上下文)。为整型和 bool 类型预定义了二进制 & 运算符。对于整型,& 计算操作数的逻辑按位“与”。对于 bool 操作数,& 计算操作数的逻辑“与”;也就是说,当且仅当两个操作数均为 true 时,结果才为 true。& 运算符计算两个运算符,与第一个操作数的值无关。int i = 0;
    if (false & ++i == 1)
    {
        // i is incremented, but the conditional
        // expression evaluates to false, so
        // this block does not execute.
    }
      

  13.   

    C++ java 
    && 运算符条件“与”运算符 (&&) 执行其 bool 操作数的逻辑“与”运算,但仅在必要时才计算第二个操作数。 
    x && y 对应于操作是,不管是否为false,先执行。而x & y   x为false,则不执行y(因为不论y为何值,“与”操作的结果都为false)。也称作为“短路”计算。 
    本人和12楼是正确的。
    &也有一种逻辑运算。也就是&是位逻辑与运算,位逻辑与运算将两个运算对象按位进行与运算。与运算的规则:1与1等于1,1与0等于0。 
    比如:10010001(二进制)&11110000等于10010000(二进制)。
      

  14.   

    &是位运算符
    &&是逻辑运算符
      

  15.   

    &&具有短路求值的特性 也就是说如果 a &&b如果a为false则不再去计算b的值,而 & 则都要取计算
    如果你的判断语句条件较多的话 强烈建议用&&
      

  16.   

    &&和&是“与”和“按位与”的关系
      

  17.   

     &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)。 && 相当于 短路逻辑操作符。及前者为假均跳过后者条件。 
      

  18.   

    (a==0&&b==0)和if(a==0&b==0)的区别&:a==0&b==0,要计算两次,当a==0为false时,而要记算b==0,
    &&:而这个不需要,逻辑短路,做了一下优了,当a==0为false时,不再记算b==0的结算
      

  19.   

    && 是条件运算符 : (a > 0 && b > 0) 两条同时满足才true 否则 false
    &  是位运算符 : (1001 & 0001) = 0001 
      

  20.   

    &是位与,&&是逻辑与。
      

  21.   

    &是位运算符,表示按位与运算 如:1001 0110 & 1111 1111 = 1111 1111 &&是逻辑与如:true&&false=false
      

  22.   

    我原来总结 Java 中的,但是我想在 C# 中应该同样适用,希望能有所帮助。如果问大家“&”、“|”、“^”这三个是什么运算符?基会本上都会回答“位运算符”,但这样的
    回答只能得50分。大多数程序员很可能不知道它还能充当其他的运算符——布尔逻辑运算符(前提是
    两边的数据类型为布尔类型)。 在布尔逻辑运算符中这三个运算符充当着“布尔逻辑与”、“布尔逻辑或”和“布尔逻辑异或”的角
    色。前面两个把它们再复制一个放在一起就成了逻辑运算符。布尔逻辑与(&)和布尔逻辑或(|)运
    算符的工作方式同逻辑与(&&)和逻辑或(||)的工作方式相同,布尔逻辑运算符的优先级别要高于
    逻辑运算符,除此之外它们还有一点细微的差别:        编译器对于 && 和 || 已经优化过的,凡 && 前面的是 false,那 && 后面的
            表达式就不再进行计算了。|| 前面的是 true,|| 后面的也就不做了,这就是
            所谓的“短路”。         而布尔逻辑运算符就没有这个特点,无论运算符前面的是 true 或 false,运算
            符后面的表达式都得继续进行运算。最后一个布尔逻辑异或(^)用得就更少了,可以采用关系运算符不等于(!=)来代替。布尔逻辑运算符与逻辑运算符还有个区别,就是布尔逻辑运算符可以与赋值运算符(=)结合成布尔逻
    辑赋值运算符(&=、|=、^=),而逻辑运算符就没有这样的功能,可能它本身就有两个了吧,再结合
    “=”的话就变三个了,呵呵,太多了 :)
      

  23.   

    恩,|,& ||与&&均可用于boolean组合运算, 不同的就是短路问题~THINKING书上看来的
    C#应该和JAVA相差不大的吧
      

  24.   

    "&"一个是 位运算符 "&&"一个是逻辑运算符
      

  25.   

    &运算的结果可以不是布尔值,看运算的数据类型,而&&的结果则必然是一个布尔值
      

  26.   


    我不懂 C#,不过在 C/C++ 的范围内你这么说是要被人笑掉大牙的!UINT a = 0x00000001,b = 0x00000010;if(a && b) => true
    if(a & b)  => false
      

  27.   

    &&是条件与运算;&是位逻辑与运算
      

  28.   

    逻辑AND: true && false : false 
    按位AND: 1001 0110 & 1111 1111 : 1001 0110 (二进制位)
    真解
      

  29.   

    &&是短路运算
    &算完
      

  30.   

    && 和 || 是逻辑运算符,有“短路”效果,从左到右计算,只要能确定整个表达式的真假,就不再计算右边的东东了。 而 & 和 | 是位运算符,用于布尔值时,没有“短路”效果,总是要计算完整个表达式。 
      

  31.   

    &&是条件与运算,表示a等于0并且b也等于0,条件就成立; 
    &是位逻辑与运算,位逻辑与运算将两个运算对象按位进行与运算。与运算的规则:1与1等于1,1与0等于0。 
    比如:10010001(二进制)&11110000等于10010000(二进制)。支持一楼的答案,但是实际中用的情况可能不同
      

  32.   

    2个完全不同的概念,
    &&是条件与运算,用于条件判断的。 比如 > < = || 这些都是
    &是位逻辑与运算,是最基本的 异或非 
      

  33.   

    &&是条件与运算
    &是位逻辑与运算
      

  34.   

    &&就是当两个条件同时成立才满足条件。
    而&是一个位运算符,它又可以叫做“逻辑乘”例如:1&1=1;1&0=0
      

  35.   

    [Quote=引用 8 楼 wuyi8808 的回复:]
    引用楼主 goopoolzl 的帖子:
    例如if(a==0&&b==0)和if(a==0&b==0)的区别是什么啊  有点混住了。。 
     在LZ举的例子中没有区别。 但在其他时候可以有区别。 区别就在于: 
    if (A && B)  如果 A 为 false ,整个表达式就为 false,不再计算 B 的值了。 if (A & B)  如果 A 为 false ,整个表达式就为 false,但还要计算 B 的值。 如果 B 是有副作用的表达式就有区别了。 这个回答是正确的,你可以找一本基础一点的书翻翻~~~
      

  36.   

    在JAVA中不管什么情况下,&两边都值计算机都要计算出来,如果&&的左边是Flase,那么右边的将不再计算!这就是最大的区别
      

  37.   

     当然有区别啦!
    1.当左右均为判断等式时,功能几乎相同,区别仅为,当遇到false时,是否继续执行.&&
    返回结果为true or false.
    例:if(a==1 && b==2)
      {
       ....
       }
    当a不为1时,语句到a==1时,即停止往下执行,即不需要执行判断b是否为2的语句,返回结果是false. 而当是&的情形
    例:
     if(a==1 & b==2)
      {
       ...
       }
    即使a不为1时,仍旧执行后面的语句.
    2.&连接的左右式子可以为数字,而&&不可以,必须为false?true的式子.
    例:
    System.out.println(2 & 3);//2

    System.out.println(2&&3);//些语句本身就通不过.我只是个新手,如果有错误的地方请高手指教啦!
    大家共同学习啦!
    呵呵~
      

  38.   

    10楼正解
    &&叫做短路运算符A&&B只要A为false就不会在计算B的值了
    而如果使用&运算符的话就要在计算B的值||和|相反
      

  39.   

    &[b][/b][size=12px][/size]
    在很多编程语言中都表示位运算
    &&[b][/b][size=12px][/size]
    则在很多编程语言中都表示与运算表示是AND的意思