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还没接触,但是不用着急,会马上更新的,觉得有帮助的点个赞谢谢,有什么意见问题,评论区可以畅所欲言。

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大黑山下一只猴^O^

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

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

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

打赏作者

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

抵扣说明:

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

余额充值