【C++基础编程】三、运算符

文章目录

三、运算符

1、算术运算符

运算符含义示例
+对两个数字进行相加的计算10 + 3 = 13
-对两个数字进行相减的计算10 - 3 = 7
*对两个数字进行相乘的计算10 * 3 = 30
/对两个数字进行除法的计算10 / 3 = 3
%对两个数字进行求模运算(求余数)10 % 3 = 1
注意事项:

整型与整型的计算结果,还是一个整型。所以,如果10/3的时候,得到的结果是3.3333333,此时系统会将这个数字强制类型类型转换成整型的结果,舍去小数点后面所有的数字,只保留整数部分,也就是3。

在进行计算的时候,结果会进行类型的提升,将结果提升为取值范围大的数据类型。
  • int与int的计算结果是int
  • int与long的计算结果是long
  • float与long的计算结果是float
  • float与double的计算结果是double
  • ...
#include <iostream>

int main(){
    // 定义两个变量,用来做计算
    std::cout << 10 + 3 << std::endl;     // 13
    std::cout << 10 - 3 << std::endl;     // 7
    std::cout << 10 * 3 << std::endl;     // 30
    std::cout << 10 / 3 << std::endl;     // 3
    std::cout << 10 % 3 << std::endl;     // 1
    
    return 0;
}

重点来了!自增自减运算符!

++、–是自增自减运算符,表示在现有的值的基础上,对数据进行+1和-1的操作。

#include <iostream>

int main(){
    // 定义一个整型的变量
    int number = 10;
    // 在现有的值的基础上+1
    number++;
    // number现在的结果就是11
    std::cout << number << std::endl;
    
    return 0;
}

但是!!自增自减运算符,还可以写在变量前面!

  • 自增自减运算符,在变量之前,表示先对变量进行计算,再取变量的值使用。
  • 自增自减运算符,在变量之后,表示先取变量的值使用,再对变量进行计算。
#include <iostream>

int main(){
    // 定义一个变量
    int number = 10;

    std::cout << number++ << std::endl;        // 输出10, 结束后number的值自增为11
    std::cout << ++number << std::endl;        // 输出12, 在上一步结束之后, number的值自增为了11, 在这里先进行计算, 再取变量的值使用。运算结束后, number的值为12
    std::cout << --number << std::endl;        // 输出11, 在12的基础上, 先减一, 再输出结果。运算结束后, number的值为11
    std::cout << number-- << std::endl;        // 输出11, 在11的基础上, 先取值, 再减一。运算结束后, number的值为10
    std::cout << number << std::endl;          // 输出10

    return 0;
}

练习题

// 有一个三位的数字, 计算每一位上的数字的和
#include <iostream>

int main(){
    // 定义一个三位的数字
    int number = 123;
    // 分别获取每一位的数字
    int g = number % 10;
    int s = number / 10 % 10;
    int b = number / 100;
    // 计算每一位的数字的和
    int result = g + s + b;
    std::cout << result << std::endl;

    return 0;
}

2、赋值运算符

在C++中的赋值运算符是=,可以将等号右边的值,给等号左边的变量进行赋值。

#include <iostream>

int main(){
    // 定义一个变量
    int variable;
    // 给这个变量进行赋值
    variable = 10;

    // 这里的等号,就是一个赋值运算符,将等号右边的值给左边的变量进行赋值。
    // 赋值完成后,变量variable的值,就是10
    return 0;
}

请注意:在C++中,等号是赋值的意思,并不是比较相等的意思。

赋值运算符的意义其实很简单,就是等号右边的值给左边的变量进行赋值。但与此同时,赋值运算符与上述的算术运算符类似,也是有运算的结果的。赋值运算的结果就是赋值完成以后的变量的值!

#include <iostream>

int main(){
    // 定义一个变量
    int number;
    // 给变量赋值,并输出赋值结果
    std::cout << (number = 100) << std::endl;     // 这里的输出结果是100,因为赋值完成之后的变量number的值就是100
    return 0;
}

此外,程序员都可会偷懒了,在赋值运算符的基础上,又结合了常用的计算,衍生出来了其他的组合的运算符。

常见的组合运算符:+= -= *= /= %=

以 += 为例,表示将一个变量,在现有的值的基础上进行加法的计算。

#include <iostream>

int main(){
    // 定义一个变量
    int number = 10;
    // 让变量在现有的值的基础上+10
    number += 10;

    std::cout << number << std::endl;   // number的结果就是20
    return 0;
}

在上述代码中,我们可以将number += 10, 理解为 number = (int)(number + 10);
对数字number进行加10的计算,并将计算的结果再强制类型转换成变量原来的类型。
例如:
char c = ‘a’;
c += 1;
最后c的结果是b,其实在这里已经完成了结果的强制类型转换。因为字符型的变量在参与运算的时候,结果会自动的转型为int类型
因为组合运算符内置了强制类型转换的操作,才会使得将计算的结果再转型为char类型

3、关系运算符

关系运算,就是对两个数字进行大小、相等的比较的运算。常用的关系运算符如下:

符号描述示例
==判断两个数字是否相等a == b
!=判断两个数字是否不相等a != b
>判断左边的数字是否大于右边的数字a > b
<判断左边的数字是否小于右边的数字a < b
>=判断左边的数字是否大于等于右边的数字a >= b
<=判断右边的数字是否小于等于右边的数字a <= b

关系运算符比较的是数值类型和字符类型的数据,得到的比较结果一定是bool类型。

#include <iostream>

int main(){
    std::cout << (10 > 5) << std::endl;      // true
    std::cout << (10 < 5) << std::endl;      // false
    std::cout << (10 >= 5) << std::endl;     // true
    std::cout << (10 <= 5) << std::endl;     // false
    std::cout << (10 == 5) << std::endl;     // false
    std::cout << (10 != 5) << std::endl;     // true
    
    return 0;
}

4、逻辑运算符

逻辑运算,是对两个布尔类型的变量进行的逻辑操作。常见的逻辑运算符如下:

符号描述示例
&与运算,两真即为真,任意一个为假,结果即为假true & false
|或运算,两假即为假,任意一个为真,结果即为真true | false
!非运算,非真即假,非假即真!true
^异或运算,相同为假,不同为真true ^ false
&&短路与,左边的结果为假,右边的表达式不参与运算false && true
||短路或,左边的结果为真,右边的表达式不参与运算true || false

关系运算符比较的是数值类型和字符类型的数据,得到的比较结果一定是bool类型。

#include <iostream>

int main(){
    std::cout << (true & false) << std::endl; // false
    std::cout << (true | false) << std::endl; // true
    std::cout << (!true) << std::endl;        // false
    std::cout << (true ^ true) << std::endl;  // false
    
    int num1 = 10;
    int num2 = 20;
    bool res = num1++ > 10 && num2++ < 100;
    std::cout << "res = " << res << ", num1 = " << num1 << ", num2 = " << num2 << std::endl;

    return 0;
}

5、位运算符

位运算,是作用于两个整型数字的运算。将参与运算的每一个数字计算出补码,对补码中的每一位进行类似于逻辑运算的操作,1相当于True,0相当于False。

符号描述示例
&位与运算10 & 20
|位或运算10 | 20
^位异或运算10 ^ 20
~按位取反运算~10
<<位左移运算10 << 2
>>位右移运算10 >> 2
  • ~:对数字补码的每一位进行取反,包括符号位。
  • <<:对数字补码的每一位向左移动指定的位数,右侧补0。
  • >>:对数字补码的每一位向右移动指定的位数,左侧补符号位。
#include <iostream>

int main() {
    std::cout << (10 & 20) << std::endl; // 位与运算
    std::cout << (10 | 20) << std::endl; // 位或运算
    std::cout << (10 ^ 20) << std::endl; // 位异或运算
    std::cout << (~10) << std::endl;     // 按位取反运算
    std::cout << (10 << 2) << std::endl; // 位左移运算
    std::cout << (10 >> 2) << std::endl; // 位右移运算

    return 0;
}

6、三目运算符

三目运算符是一个带有简单逻辑的运算符,用?:来表示,语法如下: condition ? value1 : value2

语义: condition是一个bool类型的变量或者bool结果的表达式,如果为true, 运算的结果为value1;如果为false, 运算的结果为value2。

#include <iostream>

using namespace std;

int main() {
    // 从控制台输入两个数字,计算两个数字的最大值
    int num1, num2;
    cout << "请输入一个数字: ";
    cin >> num1;
    cout << "请再次输入一个数字: ";
    cin >> num2;

    int res = num1 > num2 ? num1 : num2;
    cout << "最大值是: " << res << endl;

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咖喱年糕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值