IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++快速入门|系列(第三篇) -> 正文阅读

[C++知识库]C++快速入门|系列(第三篇)

???????????

目录

C++运算符优先级(详解)

C++运算符使用注意点

部分C++运算符例子

巩固——挑战习题

小结


????????? C++运算符优先级(详解

?优先级????????????? 运算符?? ? ? ? ? ? ?? ? 说明????? 结合性
???? 1???????????????? ::范围解析(作用域运算符)??? 从左到右
???? 2??? ? ? ? ++ ?? --后缀加加/减减? ? 从左到右
???? 2??? ? ( ) ?? [ ] ?? .???? ->?括号,数组,成员选择??? 从左到右
???? 3??????? ++????? --前缀加加/减减??? 从右到左
???? 3??????? +????????? -?正/负??? 从右到左
???? 3? ? ? ? ? !???? ~逻辑非/按位取反??? 从右到左
???? 3?????????? (? )??强制类型转换??? 从右到左
???? 3???????????? ? *解引用(拿到地址处值)??? 从右到左
???? 3?????????????? &取地址??? 从右到左
???? 3? ? ? ? ? ? sizeof求字节大小??? 从右到左
???? 3???? new?????? new[ ]动态/(动态数组)内存分配??? 从右到左
???? 3??? delete??? delete[ ]动态/(动态数组)内存释放??? 从右到左
???? 4?? ? ? .*???????? ? ? ? ->*指向成员指针??? 从左到右
???? 5?? ? ? ?? *??? /?? %乘? ? 除??? 余??? 从左到右
???? 6?????????? +??????? -?加?? 减??? 从左到右
???? 7????? <<??????? >>左移??? 右移??? 从左到右
???? 8<?????? <=???? >?? ? >=

小于,小于等于

大于,大于等于

??? 从左到右
???? 9???? ==????????? !=等于???? 不等于??? 从左到右
??? 10????????????? &按位与??? 从左到右
??? 11????????????? ^按位异或??? 从左到右
??? 12????????????? |按位或??? 从左到右
??? 13???????????? &&逻辑与??? 从左到右
??? 14???????????? ||逻辑或??? 从左到右
??? 15???????????? ?:条件运算符??? 从右到左
??? 16??????????? throw抛出??? 从右到左
??? 16?=??? += ? -= ? *= ? /= ? &= ? <<= ? >>= ? &= ? ^==? |= ??????前面的数和后面的数做运算赋值给前面那个数??? 从右到左
??? 17??????? ? ?? ? ,逗号表达式(值为逗号表示式最后元素的值)??? 从左到右

C++运算符使用注意点

1.在使用算数运算符需要注意以下4个问题。

  • 防止数据长度的溢出
  • 遵循算数的自然特征,例如禁止除数为0。
  • 取模标识符“%”要求参与运算的两个数均为整数
  • “/”运算符的两个运算对象均为整数时,其结果是整数;如果有一个是浮点型数据,其结果就是浮点型数据,其结果就是浮点数。

2.由于++,--运算符内含了赋值运算,因此运算对象只能赋值,不能作用于常量和表达式

比如7++,8--,(m+n)++这里m和n是变量都是不合法的。

3.移位操作符效率高但是容易溢出

4.注意C++中的位移运算符就是那两个<<和>>和输入输出流操作cout<<和cin>>这里面的符号虽然相同但是功能上是不一样的,原因是因为C++对这两个移位操作符进行了重载,用于输入输出流,<<和>>单独使用就还是移位操作符,佬们是不是不用纠结重载的概念,在后面将会深入介绍和学习!!!

以下是我找寻的大佬对于溢出的解释,再次表示感谢!

溢出计算机组成原理笔记——移位运算,补码加减法及溢出现象_我要吃一条街的博客-CSDN博客_补码左移溢出规则

部分C++运算符例子

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;//包含头文件在命名空间
int main()
{
	int m = 5;
	cout << m++ << endl;
	cout << m-- << endl;
	cout << ++m << endl;
	cout << --m << endl;
	cout << -m++ << endl;
	cout << -m++ << endl;
	return 0;
}

想一想会打印出什么?尤其是最后两个。

答案是5 6 6 5 -5 -6

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;//包含头文件在命名空间
int main()
{
	int i = 1, j = 2, k = 2, m = 4, n = 2;
	k += i;
	m %= j;
	n += n -= n * n;
	cout << "k= " << k << "m= " << m << "n= " << n << endl;
	return 0;
}

输出为?k=3 m=0 n=-4

第三个n最后怎么算出来-4的呢,按照优先顺序,*先算然后+=和-=优先级相同,从右向左运算,所以所以最后得出n为-4。

#include<iostream>
using namespace std;
int main()
{
	int a = 1, b = 2, c = 3;
	cout << "a=" << a << " b=" << b << " c=" << c << endl;
	//显示这三个的值是多少
	b += a + 2 * c % 5;
	cout << "b=" << b << endl;
	a *= b = c = 3;//等价于c=3,b=a,a=a*b;
	cout << "a=" << a << " b=" << b << " c=" << c << endl;
	a += b += c;//等价于b=b+c;a=a+b;
	cout << "a=" << a << " b=" << b << " c=" << c << endl;
	a -= b = ++c + 2;//等价于++c;b=b+c;a=a-b;
	cout << "a=" << a << " b=" << b << " c=" << c << endl;
	return 0;
}

答案:

a=1 b=2 c=3
b=4
a=3 b=3 c=3
a=9 b=6 c=3
a=3 b=6 c=4

巩固——挑战习题

通过输入三角形3条边边长判断能否构成三角形,如果可以,运用数学公式求出三角形面积

a=根号下(s(s-a)(s-b)(s-c)),s=(a+b+c)/2;

题比较简单,直接上代码!

#include<iostream>
#include<math.h>//因为你需要使用sqrt开根号函数所以要引这个头文件
using namespace std;
int main()
{
	float a, b, c;
	float s, area;
	cin >> a >> b >> c;//输入a,b,c的值
	if (a > 0 && b > 0 && c > 0)
	{
		if (a + b <= c || b + c <= a || a + c <= b)
		{
			cout << "这三边无法构成三角形" << endl;
		}
		else
		{
			s = (a + b + c) / 2;
			area = sqrt(s * (s - a) * (s - b) * (s - c));//利用公式求值
			cout << "a=" << a << " b=" << b << " c=" << c << " s=" << s << endl;
			cout << "area=" << area << endl;
		}
	}

	return 0;
}

小结

这篇博客就是讲了C++的运算符及其优先级,和一些具体例子和使用的注意事项,有些运算符比如throw还没接触,但是不用着急,会马上更新的,觉得有帮助的点个赞谢谢,有什么意见问题,评论区可以畅所欲言。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-16 12:51:59  更:2022-01-16 12:52:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:03:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码