c++ 3、运算符(较难运算符)

2020-04-26  本文已影响0人  八戒无戒

1、位运算

p q p&q p|q p^q
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0

a   =  0 0 1 1 1 1 0 0 [60]
b   =  0 0 0 0 1 1 0 1 [13]
a&b =  0 0 0 0 1 1 0 0 [12]
a|b   =  0 0 1 1 1 1 0 1 [61]
a^b  =  0 0 1 1 0 0 0 1 [49]
~a    =  1 1 0 0 0 0 1 1 [-61]
a>>2=  0 0 0 0 1 1 1 1 [15]
a<<2=  1 1 1 1 0 0 0 0 [240]

2、运算符
/*A    = 0011 1100   
B    = 0000 1101
A&B  = 0000 1100    与
A|B  = 0011 1101        或
A^B  = 0011 0001    异或
~A   = 1100 0011    反
A<<2 = 1111 0000    右移,空位补0
A>>2 = 0000 1111        左移,空位补0
sizeof              返回数据类型所占用空间的字节数
condition?x:y       三目
->                  成员运算符,运用于类成员
&                   指针运算符,指向变量的地址
*                   指针运算符,指向变量的值
++                  自增
--                  自减
&&                  全真即真
||                  有真为真
!                   真假反转
*/
#include "pch.h"
#include <iostream>
#include <stdio.h>
using namespace std;
int a = 0b00111100;
int b = 0b00001101;
int main()

{
    printf("a 的原值 = %d,b的原值 = %d\n", a, b);
    printf("a&b      = %d\n", a&b);
    printf("a|b      = %d\n", a|b);
    printf("a^b      = %d\n", a^b);
    printf("~a       = %d\n", ~a);
    printf("a>>2     = %d\n", a>>2);
    printf("a<<2     = %d\n", a<<2);
    return 0;
}

运算结果过如下:

a 的原值 = 60,b的原值 = 13
a&b = 12
a|b = 61
a^b = 49
~a = -61
a>>2 = 15
a<<2 = 240

2、杂项运算符
condition?x:y:三目运算符,条件为真值为x,条件为假值为y
sizeof:返回变量类型所占的字节大小
&:指针运算符,指向变量的地址
*:指针运算符,指向变量的值
++:自增,x++先引用再加1,++x先加1再引用
--:自减,x--先引用再减1,++x先减1再引用

#include "pch.h"
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
    int a = 5, *p = &a;
    int c;
    double d;
    int e;
    c = a > 6 ? 500 : 1000;                //5>6为假,所以c的值取后者
    printf("%d\n", c);   

    e = sizeof(d);                        //double类型占8字节
    printf("%d\n", e);

    *p = 20;                              //此时a的值已经变为20
    printf("%d\n",a);
    printf("%d\n",a++);                   //先引用再+1
    printf("%d\n",++a);                   //先+1再引用
    return 0;
}

运行结果如下:

1000
8
20
20
22

上一篇下一篇

猜你喜欢

热点阅读