布尔赋值运算符

  使用布尔赋值运算符可以把布尔比较与赋值组合起来,其方式与第3章中的数学赋值运算符(+=*=等)相同。布尔赋值运算符 如表 4-4 所示

表4-4 布尔赋值运算符

运算符类别示例表达式结果
&=Binaryvar1 &= var2;var1 的值是 var1 & var2 的结果
|=Binaryvar1 |= var2;var1 的值是 var1 | var2 的结果
^=Binaryvar1 ^= var2;var1 的值是 var1 ^ var2 的结果

  这些运算符处理布尔值和数值的方式与 &|^ 相同。

  &=|= 赋值运算符并不使用 &&|| 条件布尔运算符,即无论赋值运算符左边的值是什么,都处理所有操作数。

在下面的示例中,用户键入一个整数,然后代码使用该整数执行各种布尔运算。将以下代码添加到 Program.cs 中:

  1. static void Main(string[] args)
  2. {
  3. Console.WriteLine("Enter an integer:");
  4. int myInt = Convert.ToInt32(Console.ReadLine());
  5. bool isLessThan10 = myInt < 10;
  6. bool isBetween0And5 = (0 <= myInt) && (myInt <= 5);
  7. Console.WriteLine("Integer less than 10 {0}", isLessThan10);
  8. Console.WriteLine("Integer between 0 and 5 {0}", isBetween0And5);
  9. Console.WriteLine("Exactly one of the above is true {0}", isLessThan10 ^ isBetween0And5);
  10. Console.ReadKey();
  11. }

  示例的说明

  前两行代码使用前面介绍的技术,提示并接受一个整数值:

  1. Console.WriteLine("Enter an integer:");
  2. int myInt = Convert.ToInt32(Console.ReadLine());

  使用 Convert.ToInt32() 从字符串输入中得到一个整数。Convert.ToInt32() 是另一个类型转换命令,与前面使用的 Convert.ToDouble() 命令属于同一系列。

  接着声明两个布尔变量 isLessThan10isBetween0And5,并赋值,其中的逻辑匹配其名称中的描述:

  1. bool isLessThan10 = myInt < 10;
  2. bool isBetween0And5 = (0 <= myInt) && (myInt <= 5);

  接着在下面的3行代码中使用这些变量,前两行代码输出它们的值,第3行对它们执行一个操作,并输出结果。在执行这段代码时,假定用户输入了7。

  第一个输出是操作 myInt < 10 的结果。如果 myInt 是 7,则它小于 10,因此结果为 true。如果 MyInt 的值是 10 或更大,就会得到 false

  第二个输出涉及较多计算:(0 <= myInt) && (myInt <= 5),其中包含两个比较操作,用于确定 myInt 是否大于或等于0,且小于或等于 5。接着对结果进行布尔 AND 操作。输入数字 7,则 (0 <= myInt) 返回 true,而 (myInt <= 5) 返回 false,最终结果就是 (true) && (false),即 false

  最后,对两个布尔变量 isLessThan10isBetween0And5 执行逻辑异或操作。如果一个变量的值是 true,另一个是 false,则代码返回 true,所以只有 myInt 是 6、7、8或 9,才返回 true,本例输入的是 7,所以结果是 true