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++高级程序设计(清华出版社)

欢迎大家在评论区一同探讨,鄙人定会在第一时间回复。

 

posted @ 2018-06-29 13:30  逻辑上有意义  阅读(2266)  评论(0编辑  收藏  举报