跳至正文
View Categories

3 min read

1. 布尔变量 bool #

bool 变量的取值范围:
true
false
其中,它们的值也可以使用整数来表示。
true 可以用 1 表示
false 可以用 0 表示
请看以下代码:

int main()
{
    bool var(true); // 声明一个 bool 变量,并初始化

    bool is_ok;         // 声明一个 bool 变量
    is_ok = false;      // 赋值
    is_ok = 0;          // 赋值
    is_ok = true;       // 赋值
    is_ok = 1;          // 赋值

    is_ok = 20;         // 请运行,然后在调试中查看结果
    is_ok = -15;        // 请运行,然后在调试中查看结果

    return 0;
}

在这样的例程中,很难看出来 bool 变量存在的意义。
而一个 bool 变量,只有在“比较关系”中才可以真正看到它的价值。

1.1 bool 变量的意义 #

所以,下面,我们先来写一个数学上的“比较关系式”。

假设有两个数,20 和 25,请问数学中是怎么描述它们的大小关系?
20 < 25
下面我们写一段代码,来表示这样的关系。

int main()
{
    bool is_lower;         // 声明一个 bool 变量
    is_lower = 20 < 25;    // 判断 20 是否小于 25
                           // 请问,is_lower 的值是 true 还是 false?

    is_lower = (20 < 25);    // 可以使用括号

    return 0;
}

1.2 bool 变量的输出 #

下面我们来验证一下。
我们依然可以使用 cout 来输出 bool 变量的值。
请运行下面的代码:

#include <iostream>
using namespace std;

int main()
{
    bool is_lower;         // 声明一个 bool 变量
    is_lower = 20 < 25;    // 判断 20 是否小于 25

                           // 输出 bool 变量
    cout << "is_lower = " << is_lower << endl;
    return 0;
}


注意:cout 是将 bool 变量对应的整数值,作为结果输出的。

1.3 bool 变量的输入 #

我们依然可以使用 cin 来输入一个 bool 值。
请运行下面的代码:

#include <iostream>
using namespace std;

int main()
{
    bool is_lower;         
    cout << "请输入 0 或者 1:" << endl;        

    cin >> is_lower;                           // 输入 bool 变量
    cout << "is_lower = " << is_lower << endl; // 输出 bool 变量

    return 0;
}


注意:输入 bool 值时,需要使用对应的整数值,作为输入。

2. 字符类型 char #

2.1 char 的数值 #

类型名称charunsigned char
所占字节数11
表示范围-128~1270~255
  • char 和 unsigned char 的大小都是 1 字节(Byte)
  • unsigned char 本身为一个整型,表示范围为 0 ~ 255
  • char 本身为一个整型,表示范围为 -128~127

下面,我们来使用一下 char,请看代码

#include <iostream>
using namespace std;
int main()
{
    // 定义、初始化、赋值
    char ch1;
    ch1 = 5;

    char ch2(6);

    char ch3 = 8;

    return 0;
}

这些是常规用法,现在来看一下

#include <iostream>
using namespace std;
int main()
{
    // 定义、初始化、赋值
    char ch1;
    ch1 = 'A';

    char ch2('b');

    char ch3 = 'C';

    return 0;
}

C++ 中,char 除了可以表示一个数值以外,还被用来表示“字符”

名词解释:“字符”
字符,其实就是一个英文字母、数字、特殊符号

这里有两个关键词:

  • 一个
  • 英文字母、数字、特殊符号

汇总如下:

2.2 ASCII #

一般,我们需要重点关注的是“ASCII 打印字符”

请注意:为了区别,C++ 使用单引号(’)来表示字符常量
请看代码:

#include <iostream>
using namespace std;
int main()
{
    char ch1;                        // 赋值为字符 'A'
    ch1 = 'A';

    char ch2;
    ch2 = 65;                       // 赋值为数字 65

    cout << "ch1 = " << ch1 << endl; // 输出字符变量
    cout << "ch2 = " << ch2 << endl; // 输出字符变量

    return 0;
}

是不是发现,输出为

ch1  = A
ch2 = A

对于字符变量的赋值,请注意:

  • 字符变量,使用字符赋值,字符会转化成对应的数值,存储到变量中。
  • 字符变量,使用数值赋值,数值将直接,存储到变量中。
  • 字符变量,使用数值赋值,数值范围不可超过 [0, 127]。

对于字符变量的输出,请注意:

  • 字符变量,输出时,存储的数值,将转化成 ASCII 中对应的字符,然后输出到屏幕。

这就体现了 C++ 中, char 类型的特殊性。
这里请注意,char 和 unsigned char 都可以使用,但是必须注意取值范围。

  • [0, 127]

超出范围的赋值,不会报错,但是它的值就不确定了。请特别注意。

#include <iostream>
using namespace std;
int main()
{
    char ch;                              // 赋值为字符 'A'
    ch = 'A';

    unsigned char uc;                    // 可以使用 unsigned char
    uc = 65;                             // 赋值为数字 65

    cout << "ch  = " << ch  << endl;       // 输出字符变量
    cout << "uc = " << uc << endl;       // 输出字符变量

    return 0;
}

3. 关系运算符 #

在数学中,我们学习过数值大小关系的表达。
在 C++ 中,大多数的数学关系,都是相同的。不过,由于一些数学上的符号,
在键盘上不能直接打出来。所以 C++ 的“关系运算符”上,和数学略有不同。

下表中,展示了这些不同。

关系运算符的示例:

a >  b;   // 大于
a >= b;   // 大于等于
a <  b;   // 小于
a <= b;   // 小于等于
a == b;   // 等于
a != b;   // 不等于

4. 关系表达式 #

C++ 中,将含有“关系运算符”的表达式,称为“关系表达式”。
上面的示例代码中,全部都属于“关系表达式”。

我们在之前的例程中演示了使用“关系表达式”给 bool 变量赋值
下面,总结一下“关系表达式”的常用情况。

int main()
{
    5 > 6;                        // 关系表达式

    bool b_0 = 5 > 6;             // b_0 的值为 false
    bool b_1 = 5 < 6;             // b_1 的值为 true
    bool b_2 = (5 > 6);           // b_2 的值为 false
    bool b_3 = 5 > (6-5);         // b_3 的值为 true

    int  a   = 10;
    bool b_4 = 5 > a;             // b_4 的值为 false

    int  a = 15;
    bool b_5     = a != a;  // b_5 的值为 true
    bool b_6     = a!=7;    // b_6 的值为 true,空格可以省略

    bool result;
    result =   5 > = 6;           // 【错误写法】>= 中间不能有空格
    result =   5 < = 6;           // 【错误写法】<= 中间不能有空格
    result =   5 = = 6;           // 【错误写法】== 中间不能有空格
    result =   5 ! = 6;           // 【错误写法】!= 中间不能有空格

    return 0;
}


表达式中,数值/变量 和 符号 之间的空格可以省略

请口头判断下面表达式的值。

10 > 8;
10 >= 8;
1 < 8;
1 <= 8;
1 == 8;
1 != 8;

int a(50);

a != 50;
a == 50;
a >= 50;
a <= 50;

5. 课后练习 #

  1. 输出字符的ascii码
  2. 求六位整数的各个位
  3. 正多边形每个内角的度数
  4. 买水果
  5. 求圆环的面积