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
网友评论