c++的常见运算符的分类与浅析
口号:今天也要元气满满哦!
分类:
(虽然看起来很多,但是仔细了解之后会发现因为彼此之间没有太准确的联系,所以还是蛮好记忆的)
算术运算符:
定义:
算术运算符就像是表面的意思,要算术的。用于各数值运算,包括+ - * / 还有求余,也就是%(模运算)。
详细描述相关细节和注意部分:
1.加减乘除就是我们简单上理解的加减乘除了,不过关于除(/)如果操作数都是整型时,那么结果也是整型,除不开的话会吧=把小数部分直接省掉。但如果两个里面至少有一个实型(不管有没有带小数点输入,它是实型就代表它是可以被理解为有小数点的)。
2.%模运算参与运算的操作数必须是整型的,结果是相除后的余数。
3.两个 - 不能紧挨在一起,否则会被理解为另一种运算符(自减运算符)所以要用空格分开或者是括号分隔,如- -a或-(-a)。
1 #include<iostream> 2 using namespace std; 3 int main(){ 4 int a,b; 5 cout<<"输入整型变量a:"; 6 cin>>a; 7 cout<<"输入整型变量b:"; 8 cin>>b; 9 cout<<"a+b="<<a<<'+'<<b<<'='<<a+b<<endl; 10 //其余的运算符的就不写了都是类似的 11 cout<<"double(a)/b="<<double(a)<<'/'<<b<<'='<<double(a)/b<<endl; 12 return 0; 13 }
优先级说明:* / %优先级高于+ - ,但高的和高的之间优先级是相同的,如/和%之间,+和-之间。
增量运算符:(优先级高于算术运算符)
解释:主要我们常见的++ 和--表示操作数自增或者是自减的行为。但是符号的位置对最终的结果都有着影响。
本po主主要在百度上搜索了一下,就拿一个例子来说明吧. let's go!!!
如:x=10;y=++x;
答案:y=11(也就是说当两个+在前面的时候先进行等号右边+1,也就是x+1然后再赋值给y。)
x=10;y=x++;
答案:y=10(关于这个理解我一般都是觉得y=x++嘛,先理解为y=x,也就是现在y=x,也就是y=10,但是后面的++怎么处理呢,这是在赋值给y之后x的变化,x再进行自增,所以x=11,若是在先后顺序上面去理解可能会更好理解一点。)
-- part : same with ++
让我们在代码实例世界里面进行了解吧!
1 #include<iostream> 2 using namespace std; 3 int main(){ 4 int a, b, x, y; 5 cout << "输入a=" << endl; 6 cin>>a; 7 cout << "输入b=" << endl; 8 cin>>b; 9 cout << "a++=" << a++ << endl; 10 cout << "a=" << a << endl; 11 cout << "++a=" << ++a << endl; 12 cout << "a=" << a << "b=" << b << endl; 13 x = ++a + b++; 14 y = a++ - --b; 15 cout << "x=" << x << ",y=" << y << endl; 16 cout << "a=" << a << ",b=" << b << endl; 17 return 0; 18 }
以下是上面代码的运行结果(结合着实例答案来看一下和自己理解上是否达成共识吧~)
赋值运算符:(优先级低于算术运算符)
= (就是他没错了)
关于赋值运算符,主要了解两个式子应该就差不多了。
a=b=c=6和x=(a=3)+(b=2)
第一个式子是从右往左实现的,可理解为:a=(b=(c=5)) 从右往左,一步一步的。
第二个就很好理解了,x=5。
还有一些复合的赋值运算符,如:a+=b+c 则等价于a=a+(b+c) a%=b+c就等价于a=a%(b+c) ;
例如:最开始a=12; a+=a*=2后a=多少?(答案在后面揭晓)
!关于赋值运算符有几点注意 !
1. int x=2.4(x会=2,小数点后面直接被省掉)
2.double x=2(x=2.0)
关系运算符:(优先级低于算术运算符,高于赋值运算符)
关系运算符主要就是那些大于小于之类的:
以下同一颜色的优先级相同
> < <= >= 高于 == != 运算结果为true or false 也就是1 或者0
注意:>=之间不要写空格。在运算过程中要摒弃之前的数学思想,在这里只有true or false
逻辑运算符:(优先级高于赋值运算符,!的优先级高于算术运算符,&& ||低于关系运算符,&&高于||)
就是我们常说的与或非了。关于与或非我们主要需要记住的就是他们之间的运算真值表。或(||)是两个中有一个为真那么就为真,而与(&&)是两个都为真才为真,否则是假。
注意:&&,||是左结合性 !是右结合性(就是我们之前讲过的同时出现多个从哪边开始算起,可以见前文下划线部分)
条件运算符:(优先级高于赋值运算符,低于逻辑运算符)
代替if else的语句, 为 ? :
在一个实例中来了解吧👇
x=15;
y=x>12?10:20;
意思就是x大于12的话,y就取10,否则就取20。
逗号运算符:
就只是逗号而已,他也是运算符之一,只是他的优先级是最低的,很明显是左结合性啦~
整理区:算术运算符(加 减 乘 除 求余),增量运算符(++ --),赋值运算符(=),关系运算符(> < >= <= == !=),逻辑运算符(&& || !),条件运算符(?:),逗号运算符(,)。
答案区:a=48
参考资料:c++高级程序设计(清华出版社)
欢迎大家在评论区一同探讨,鄙人定会在第一时间回复。