跳至正文
View Categories

2 min read

主要内容 #

1. 再看 else #

小练习:
请补全下面的程序,判断一个数是否是负数。
如果是,则输出“是负数”。否则不做处理。

// 请补全
#include < iostream >
using namespace std;
int main()
{
    int input(0);
    cout << "请输入一个整数" << endl;
    cin >> input;
    if(input >= 0)
    {

    }
    else
    {

    }

    return 0;
}

示例程序:

#include < iostream >
using namespace std;
int main()
{
    int input(0);
    cout << "请输入一个整数" << endl;
    cin >> input;
    if(input >= 0)
    {

    }
    else
    {
        cout << "是负数" << endl;
    }

    return 0;
}

2. 逻辑关系“非”:取反(取和表达式相反的值) #

我们来详细看一下上面的 if 结构。

if(input >= 0)                  // 条件 1
{

}
else
{
    out << "是负数" << endl;     // 语句 X
}

请问:(选择题)
如果,我们希望执行“语句 X”,“条件表达式 1 ” 应该如何?

  • A. “条件表达式 1 ” 成立;
  • B. “条件表达式 1 ” 不成立;
  • 这里,应该是选择B;

    还记得我们在数学中,怎么表达这样的关系吗?


    上面的关系,在数学中被称为: 逻辑关系“非”

    input -1 1
    不等式是否成立 成立 不成立

    其实,逻辑关系“非”非常容易理解,甚至还有点哲学的味道。
    一些通俗的解释:

  • 逻辑关系“非”是硬币的另一面;
  • 中国传统哲学讲阴阳,如果一个表达式为“阳”,那么他的“非”就是“阴”;
  • 3. 逻辑关系表达式 #

    3.1 “!”符号 #

    上面的数学不等式,在 C++ 可以表达为:

      
    !(input >= 0) // 这里的 括号 不能缺少。
  • C++ 中,使用 ! 来表示 逻辑关系“非”
  • 符号 ! 表示:取反“条件表达式 1 ” ;
  • 这也是一种“表达式”,我们称之为“逻辑关系表达式”逻辑关系“非” 是其中的一种;
  • 上面的关系,可以再写作:

      
    bool is_ok;
    
    is_ok = !(input >= 0);
    
    is_ok = !(is_ok);       // 如果是变量,可以省略括号
    
    is_ok = !is_ok;         // 如果是变量,可以省略括号
    is_ok = !true;          // 如果是 bool 值,可以省略括号
    is_ok = !0;             // 如果是 bool 值,可以省略括号

    “逻辑关系表达式”的取值说明:

      
    bool is_ok = !(条件表达式 1)
    条件表达式 1 is_ok
    true false
    false true

    3.2 取反“关系表达式” #

    在上面的代码中,你一定发现了,我们还可以这样来改写;

    if(input >= 0)                  // 条件 1
    {
    
    }
    else
    {
        out << "是负数" << endl;     // 语句 X
    }

    等价于下面的写法

    if(input < 0)                   // 条件 2
    {
        out << "是负数" << endl;     // 语句 X
    }

    请仔细分析以一下,条件 1 和 条件 2 的逻辑关系。

    !(input >= 0)    <== 等价于 ==>    (input < 0)

    很显然,这个逻辑是成立的。
    我们来看一些例子:

    !(input >= 0)    <== 等价于 ==>    (input <  0)  
    !(input >  0)    <== 等价于 ==>    (input <= 0)  
    !(input == 0)    <== 等价于 ==>    (input != 0)  
    !(input <= 0)    <== 等价于 ==>    (input >  0)  
    !(input <  0)    <== 等价于 ==>    (input >= 0)  
    !(true      )    <== 等价于 ==>    (false     )  
    !(false     )    <== 等价于 ==>    (true      )

    在这之中,还有一些更复杂的变换,我们将在下节说明。至此,请务必掌握这里列出的所有变换。

    4. 逻辑关系“非”的辅助理解 #

  • 逻辑关系“非”的理解1:
  • 逻辑关系“非”的理解2:
  • 习题 #

    课后练习