从零开始:Qt可视化程序设计基础教程
上QQ阅读APP看书,第一时间看更新

1.5 运算符

运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C++内置了丰富的运算符,并提供以下类型的运算符。

算术运算符:用于处理四则运算。

赋值运算符:用于将表达式的值赋给变量。

比较运算符:用于表达式的比较,并返回一个真值或假值。

逻辑运算符:用于根据表达式的值返回真值或假值。

· 1.5.1 算术运算符

作用:处理四则运算。

表1-4所示为常用的算术运算符,部分使用方法见例1-6、例1-7、例1-8。

表1-4 常用的算术运算符

运算符

含义

示例

结果

+

正号

+3

3

-

负号

-3

-3

+

10 + 5

15

-

10-5

5

*

10 * 5

50

/

10 / 5

2

%

取模(取余)

10 % 3

1

++

前置递增

a=2; b=++a;

a=3; b=3;

++

后置递增

a=2; b=a++;

a=3; b=2;

--

前置递减

a=2; b=--a;

a=1; b=1;

--

后置递减

a=2; b=a--;

a=1; b=2;

例1-6:加减乘除运算。

    //加减乘除
    #include <iostream>
    using namespace std;
    int main() {
       int a1 = 10;
       int b1 = 3;
       cout << a1 + b1 << endl;
       cout << a1 - b1 << endl;
       cout << a1 * b1 << endl;
       cout << a1 / b1 << endl;  //两个整数相除,结果依然是整数
      int a2 = 10;
       int b2 = 20;
       cout << a2 / b2 << endl; 
       int a3 = 10;
       int b3 = 0;
       //cout << a3 / b3 << endl; //报错,除数不可以为0
       //两个小数可以相除
       double d1 = 0.5;
       double d2 = 0.25;
       cout << d1 / d2 << endl;
       return 0;
    }

例1-6运行结果如图1-21所示。

总结:在除法运算中,除数不能为0。

例1-7:取模运算。

    //取模
    #include <iostream>
    using namespace std;
    int main() {
       int a1 = 10;
       int b1 = 3;
       cout << 10 % 3 << endl;
       int a2 = 10;
       int b2 = 20;
       cout << a2 % b2 << endl;
       int a3 = 10;
       int b3 = 0;
       //cout << a3 % b3 << endl; //取模运算时,除数也不能为0
       //两个小数不可以取模
       double d1 = 3.14;
       double d2 = 1.1;
       //cout << d1 % d2 << endl;
       return 0;
    }

例1-7运行结果如图1-22所示。

图1-21 例1-6运行结果

图1-22 例1-7运行结果

总结:只有整型变量可以进行取模运算。

例1-8:递增运算。

    //递增
    #include <iostream>
    using namespace std;
    int main() {
       //后置递增
       int a = 10;
       a++; //等价于a = a + 1
       cout << a << endl; // 11
       //前置递增
       int b = 10;
       ++b;
       cout << b << endl; // 11
       //区别
       //前置递增先对变量进行递增运算,再计算表达式
       int a2 = 10;
       int b2 = ++a2 * 10;
       cout << b2 << endl;
       //后置递增先计算表达式,后对变量进行递增运算
       int a3 = 10;
       int b3 = a3++ * 10;
       cout << b3 << endl;
       return 0;
    }

例1-8运行结果如图1-23所示。

图1-23 例1-8运行结果

总结:前置递增先对变量进行递增运算,再计算表达式;后置递增则先计算表达式,后对变量进行递增运算。

· 1.5.2 赋值运算符

作用:将表达式的值赋给变量。

表1-5所示为常用的赋值运算符,部分使用方法见例1-9。

表1-5 常用的赋值运算符

运算符

含义

示例

结果

=

赋值

a=2; b=3;

a=2; b=3;

+=

加等于

a=0; a+=2;

a=2;

-=

减等于

a=5; a-=3;

a=2;

*=

乘等于

a=2; a*=2;

a=4;

/=

除等于

a=4; a/=2;

a=2;(取整数)

%=

模等于

a=3; a%2;

a=1;(取余数)

例1-9:赋值运算符。

    #include <iostream>
    using namespace std;
    int main() {
       // =
       int a = 10;
       a = 100;
       cout << "a = " << a << endl;
       // +=
       a = 10;
       a += 2; // a = a + 2;
       cout << "a = " << a << endl;
       // -=
       a = 10;
       a -= 2; // a = a - 2
       cout << "a = " << a << endl;
       // *=
       a = 10;
       a *= 2; // a = a * 2
       cout << "a = " << a << endl;
       // /=
       a = 10;
       a /= 2;  // a = a / 2;
       cout << "a = " << a << endl;
       // %=
       a = 10;
       a %= 2;  // a = a % 2;
       cout << "a = " << a << endl;
       return 0;
    }

例1-9运行结果如图1-24所示。

图1-24 例1-9运行结果

· 1.5.3 比较运算符

作用:表达式的比较,并返回一个真值或假值。

表1-6所示为常用的比较运算符,部分使用方法见例1-10。

表1-6 常用的比较运算符

运算符

含义

示例

结果

= =

等于

4 = = 3

0

!=

不等于

4 != 3

1

<

小于

4 < 3

0

>

大于

4 > 3

1

<=

小于等于

4 <= 3

0

>=

大于等于

4 >= 1

1

例1-10:比较运算符。

    #include <iostream>
    using namespace std;
    int main() {
       int a = 10;
       int b = 20;
       cout << (a = = b) << endl; // 0 
       cout << (a != b) << endl; // 1
       cout << (a > b) << endl; // 0
       cout << (a < b) << endl; // 1
       cout << (a >= b) << endl; // 0
       cout << (a <= b) << endl; // 1
       return 0;
    }

注意:C++的比较运算中,“真”用数字“1”来表示,“假”用数字“0”来表示。

例1-10运行结果如图1-25所示。

图1-25 例1-10运行结果

· 1.5.4 逻辑运算符

作用:根据表达式的值返回真值或假值。

表1-7所示为常用的逻辑运算符,部分使用方法见例1-11、例1-12、例1-13。

表1-7 常用的逻辑运算符

运算符

含义

示例

结果

!

!a

a为假,则!a为真;a为真,则!a为假

&&

a && b

a和b都为真,则结果为真,否则为假

||

a || b

a和b有一个为真,则结果为真;二者都为假时,结果为假

例1-11:逻辑非运算符。

    //逻辑非运算符  
    #include <iostream>
    using namespace std;
    int main() {
      int a = 10;
       cout << !a << endl; // 0
       cout << !!a << endl; // 1
       return 0;
    }

例1-11运行结果如图1-26所示。

总结:真变假,假变真。

例1-12:逻辑与运算符。

    //逻辑与运算符  
    #include <iostream>
    using namespace std;
    int main() {
       int a = 10;
       int b = 10;
       cout << (a && b) << endl;// 1
       a = 10;
       b = 0;
       cout << (a && b) << endl;// 0 
       a = 0;
       b = 0;
       cout << (a && b) << endl;// 0
       return 0;
    }

例1-12运行结果如图1-27所示。

图1-26 例1-11运行结果

图1-27 例1-12运行结果

总结:同真为真,其余为假。

例1-13:逻辑或运算符。

    //逻辑或运算符  
    #include <iostream>
    using namespace std;
    int main() {
       int a = 10;
       int b = 10;
       cout << (a || b) << endl;// 1
       a = 10;
       b = 0;
       cout << (a || b) << endl;// 1 
       a = 0;
       b = 0;
       cout << (a || b) << endl;// 0
       return 0;
    }

例1-13运行结果如图1-28所示。

图1-28 例1-13运行结果

总结:同假为假,其余为真。