C++ 初学者指南 第二篇(7)

项目2-2 构建异或关系的逻辑运算
 C++中没有定义异或关系的逻辑运算符,也就是XOR。异或运算是一种二进制的运算,只有当两个运算数中只有一个为true的时候其结果才是true。其真值表如下:

p

q

p XOR q

false

false

false

false

true

true

true

false

true

true

true

false

一些程序员认为缺失了异或运算是C++的一个缺憾。也有人认为没有引入异或运算是C++的简化设计,避免了冗余的特性。他们认为使用C++中提供的其他三个逻辑运算符就很容易构造出异或运算。
 在本项目中,我们将使用&&,||,和!运算符来构建异或运算。
步骤:
1. 创建一个新的文件叫做XOR.cpp
2. 假定有两个bool类型变量p和q,那么异或运算可以通过下面的方式来构造:
    (p||q)&&!(p&&q)
    我们来仔细研究一下这个表达式。首先,p和q做或运算,如果其值为true,说明其中至少有一个为真。接着,p和q做与的运算,其值只有两者都为true的时候为true。然后对其结果做非运算,!(p&&q)的值只有p或者q或者两者都是假的时候。最后,这个结果和(p||q)相与。因此,整个表达式只有在其中一个操作数为true的情况下才为true。
3. 下面是完整的程序。他演示了四种异或运算的结果。
    /* Project 2-2 Create an XOR using the C++ logical operators. */
    #include <iostream>
    #include <cmath>
    using namespace std;
    int main()
    {
        bool p, q;
        p = true;
        q = true;
        cout << p << " XOR " << q << " is " << ( (p || q) && !(p && q) ) << "/n";
        p = false;
        q = true;
        cout << p << " XOR " << q << " is " << ( (p || q) && !(p && q) ) << "/n";
   
        p = true;
        q = false;
        cout << p << " XOR " << q << " is " << ( (p || q) && !(p && q) ) << "/n";
   
        p = false;
        q = false;
        cout << p << " XOR " << q << " is " << ( (p || q) && !(p && q) ) << "/n";
   
    return 0;
    }
4. 编译并运行这个程序。输出结果如下:
    1 XOR 1 is 0
    0 XOR 1 is 1
    1 XOR 0 is 1
    0 XOR 0 is 0
5. 注意异或运算表达式最外层的括号。由于运算符优先级的关系,它们是必须的。<<运算符的优先级是高于逻辑运算符的。为了证实这一点,可以尝试去掉最外层的括号,然后试图编译这个程序。结果就是有编译错误。
练习
    1. %运算符是用来做什么的?他可以被应用那种类型的数据上?
    2. 如何声明一个int类型的名字叫做index的变量,他的初始值为10?
    3. 关系或者逻辑运算符的结果是什么类型?
答案
    1. % 是取模运算符。他返回整除的余数,他可以被应用于整形数上。
    2. int index = 10;
    3. 关系和逻辑运算表达式的结果是bool类型的。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值