C++| C++ 入门教程 运算符
Posted Yangtzi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++| C++ 入门教程 运算符相关的知识,希望对你有一定的参考价值。
3 运算符
作用:用于执行代码的运算
3.1 算术运算符
作用:用于处理加减乘除
+ - * / 加减乘除
/ 除法:两个整数相除的时候,结果依然是整数,小数部分将会被去除
% 取模(又称取余):只能是两个整数取余
++ 递增 --递减:让变量自加1,或自减1
前置递增(递减):递增(递减)运算符放变量前面,会先增后算。相反则会先算后增。
int main(){
using namespace std;
//前置运算,最后会得到a=3, b=3
int a=2;
int b=++a;
cout<<b<<endl;
//后置运算,最后会得到a=3, b=2
int c=2;
int d=c++;
cout<<d<<endl;
return 0;
}
3.2 赋值运算符
作用:把右边的值赋给左边
= 赋值运算
+=, -=, *=, /= 加等于,建等于,乘等于,除等于:这些符号一种简化,表示将左边对右做运算后将结果赋给左边。
3.3 比较运算符
作用:用于表达式的比较,并返回一个布尔值。
== 等于
!= 不等于
< 小于
\\> 大于
<= 小于等于
\\>= 大于等于
3.4 逻辑运算符
作用:对值进行逻辑处理
! 逻辑非运算
&& 逻辑与运算
|| 逻辑或运算
3.5 操作符优先级小结(补充)
3.5.1 优先级1(优先级由高到低)从左到右结合
最高优先级:括号 ()
所有优先级都可以被括号打破
访问操作符:数组下标访问[]
,指针成员访问->
,对象成员访问.
,对象作用域访问::
后置自增自减运算符:++
,--
需要注意的是,访问操作符的优先级是非常高的。如果解析运算符*
和访问运算符放在变量的两侧,编译器会先进行的是访问运算符。就如下例子:
#include<iostream>
using namespace std;
class Person {
public:
int years;
Person(int y) {
years = y;
}
};
int main() {
Person* p = new Person(20);
cout << *p.years;
delete p;
return 0;
}
请注意第13行cout << *p.years;
,因为p是一个指向Person对象的指针,它并不会先和解析运算符结合后再结合访问运算符orz而会先结合右边的访问运算符。但是对象指针不应该用.
来访问成员,因此编译器会报错。
错误(活动) E0153 表达式必须具有类类型,但它具有类型 "Person *"
错误 C2228 “.years”的左边必须有类/结构/联合
对于这个错误,修改一下优先级就好了。用括号让p先和左边结合。
#include<iostream>
using namespace std;
class Person {
public:
int years;
Person(int y) {
years = y;
}
};
int main() {
Person* p = new Person(20);
cout << (*p).years;
delete p;
return 0;
}
(当然你也可以直接使用->
,但是我不想哈哈哈哈)
3.5.2 一元向左结合操作符
逻辑非!
按位取反~
前置递增++
前置递减--
取负-
取正+
解析*
取地址&
强制类型转换(type)
3.5.3 双元算术比较位运算符(向右)
乘除取模
加减
按位移
比较
按位与或
逻辑与或
3.5.4 三元赋值逗号(向左)
三元操作符(向左)
赋值操作符(向左)
逗号操作符(向左)
以上是关于C++| C++ 入门教程 运算符的主要内容,如果未能解决你的问题,请参考以下文章