C++竞赛【运算符与位运算基础】note

本文详细介绍了C++中的基本运算符,包括算数运算符(加减乘除、自增自减)、赋值运算符、比较运算符、逻辑运算符以及一些特殊运算符如sizeof()、&和三目运算符。还讨论了运算符的优先级和逻辑短路现象。
摘要由CSDN通过智能技术生成
Part 1 算数运算符

基本运算符:

运算符含义说明
+加法根据加减运算规律计算
-减法
*乘法
/除法

自增自减:

运算符含义说明
++自增i+=1(让变量的值加1)
--自减i-=1(让变量的值减1)
#include <iostream>
using namespace std;
int main()
{
    int a = 10,b;
    b = ++a;
    cout << b << endl;
    return 0;
}

此时输出结果为11,但请注意当要把“a”这个变量自增1,则写成“a++”即可

​#include <iostream>
using namespace std;
int main()
{
    int a = 10;
    a++;
    cout << a << endl;
    return 0;
}

切勿写成下面的形式,会报错

​#include <iostream>
using namespace std;
int main()
{
    int a = 10;
    a = ++a;
    cout << a << endl;
    return 0;
}

其他运算符:

运算符含义说明
%取模(取余)

返回两数相除的余数

注意:

1.左右操作数均为整数

        列题1:

        【题目描述】

                输入一个3位数,再倒着输出这个数

        【样例代码】

#include <iostream>
using namespace std;
int main()
{
    int x,y,z,num;
    cin >> num;
    x = num % 10;
    y = num /10 % 10;
    z = num / 100 % 10;
    cout << x << y << z;
    return 0;
}

总表:

运算符含义说明
+加法根据加减运算规律计算
-减法
*乘法
/除法
++自增i+=1(让变量的值加1)
--自减i-=1(让变量的值减1)
%取模(取余)返回两数相除的余数
Part2 赋值运算符
运算符含义说明
=赋值等号右边的给左边
+=加复制先在等号左边与数值进行计算后,把计算结果重新赋值回原来的变量
-=减赋值
*=乘赋值
/=除赋值
%=模赋值

优先级:所有赋值运算符的优先级都小于算数运算符。

Part3 比较运算符(关系运算符)

数据类型:布尔值(bool),其中True(1)为真,False(0)为假。

任意非0数,布尔值输出结果为1

运算符含义说明
>大于判断比较是否成立,成立为True,不成立为False
>=大于等于
<小于
<=小于等于
==等于
!=不等于

注意:判断写在括号内!!!

eg:

#include <iostream>
using namespace std;

int main()
{
    cout << (1 <= 2);
    return 0;
}

返回为1

逻辑值:

整型中:只有0为False,其他全为True;

浮点型中:只有0.0为False,其他全为True;

字符型中:只有'/0'为False,其他全为True;

Part 4 逻辑运算符

逻辑与:&&(有一个假就假)

若&&左右两边判断都成立,其结果就成立

e.g. 1 > 2 && 1 < 2 结果为0(False)

        1 < 2 && 1 < 2 结果为1(True)

逻辑或:||  (有一个真就真)

若&&左右两边判断有一个成立,其结果就成立

e.g. 1 > 2 || 1 < 2 结果为1(True)

逻辑非:!

经非逻辑运算后,相反的结果

e.g. 1 > 2 && 1 < 2 结果为1(True)

对立事件:

逻辑非运算,就相当于大于变小于等于,小于变大于等于,不等于变等于,然后或变于

#include <iostream>
using namespace std;

int main()
{
	int n;
	cin >> n;
	
	bool flag1 = (n < 1 || n > 10);
	bool flag2 = !(n < 1 || n > 10);
	bool flag3 = !(n >= 1 && n <= 10);
	
	cout << flag1 << endl;
	cout << flag2 << endl;
	cout << flag3 << endl;
	cout << (flag1 == flag3); //由于为对立事件,所以永远成立
	
	return 0;
}

Part 5 杂项运算符

1.sizeof():计算或号内字节大小

2.&():返回变量的地址

3.condition ? x : y (三目运算符):判断“condition(这是一个表达式)”是否成立,如果逻辑值为真(成立)输出x,逻辑值为假(不成立)则输出y*[三目运算符优先级较低,建议打括号后再使用]

 eg:

#include <bits/stdc++.h>
using namespace std;

int main()
{
	int age = 12;
	cout << (age >= 18 ? "成年":"未成年");
	return 0; 
}

输出为:

未成年

Part 6 逗号运算符

格式:

表达式1,表达式2,表达式3,表达式4

作用:同时执行多个表达式,但是他只会返回最后一个表达式的值。

比如:

a = (b=4,c=3,b+c)

a的值为:

7
Part 7 优先级

逻辑运算符 > 比较运算符 >  算数运算符 > 赋值运算符 > 逗号运算符

即 计算顺序为 算数 -> 赋值 -> 比较 -> 逻辑运算

Part 8 取区间

for example:

在Python中,区间1~15可以表示成:

1 <= a <= 15

但在c++中,只能表示成:

1 <= a && a <= 15

Part 9 逻辑短路现象

经典程序:

#include <iostream>
using namespace std;

int main()
{
	int a, b;
	a = 0;b = 0; 
	if (a++ && ++b) // 先取值a的值为false,所以++b不会执行 
	{
		cout << "1111111111" << endl;
	}
	printf("a=%d\nb=%d\n",a,b);
	
	cout << endl; 
	
	a = 0,b = 0;
	if (++a || b++)// 先取值++a的值为true,所以b++不会执行 
	{
		cout << "2222222222" << endl;
	}
	printf("a=%d\nb=%d\n",a,b);
	return 0;
}

输出结果:

a=1
b=0

2222222222
a=1
b=0

  • 26
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值