- 1、运算符分类
- 2、运算详解
- 1.a++和++a的区别
- 2.位运算符
- 3.杂项运算符
- 4.在计算器中,负数以其正值的补码形式存在
- 5. ~操作
- 算数运算符
- %:取模运算符,整除后的余数,只适用于整数,不可以是小数,其结果符号取决于%左边的符号
- 关系运算符
- 等于、不等于、大于、小于、大于等于、小于等于
- 逻辑运算符
- &&:逻辑与运算
- ||:逻辑或运算
- !:逻辑非运算符
- 位运算符
- &:按位与
- |:按位或
- ^:异或运算
- ~:取反运算
- ~1 = -2
- ~0 = -1
- <<:左移运算符,右边补0
- />>:右移运算符,正数左补0,负数左补1
- 赋值运算符
| 运算符 | 作用 |
|---|---|
| = | c = a+b |
| c+=a | c=c+a |
| c-=a | c=c-a |
| c*=a | c=c*a |
| c/=a | c=c/a |
| c%=a | c=c%a |
| c<<=2 | c=c<<2 |
| c>>=2 | c=c>>2 |
| c&=2 | c=c&2 |
| c^=2 | c=c^2 |
| c|=2 | c=c|2 |
- 杂项运算符
- sizeof():返回变量的大小
- &:返回变量的地址
- *:指向一个变量
- ?::条件表达式,三元运算符
- 代码实现:
#include
int main(){ int c; int a = 10; c = a++;//c的结果为10 printf("先赋值后运算:%dn",c); a = 10; c = ++a;//c的结果为11 printf("先运算后赋值:%d",c); } - 运行结果:
先赋值后运算:10 先运算后赋值:11
- 代码实现:
#include
#include void binary(int x){ int b,i,k = 0; int remainder[30]; while (x != 0) { b = x/2; k++; remainder[k] = x - b*2; x = x/2; } for(i = k;i >= 1;i--){ printf("%d",remainder[i]); } printf("n"); } int main(){ unsigned int a = 60; //00111100 unsigned int b = 13; //00001101 int c = 0; c = a & b; printf("a,b按位与:"); binary(c); c = a | b; printf("a,b按位或:"); binary(c); c = a ^ b; printf("a,b按位异或:"); binary(c); c = ~a; printf("a取反:"); binary(c); printf("a取反:%dn",c); c = a << 2; printf("a左移两位:"); binary(c); c = a >> 2; printf("a右移两位:"); binary(c); } - 运行结果:
a,b按位与:1100 a,b按位或:111101 a,b按位异或:110001 a取反:-1-1-1-10-1 a取反:-61 a左移两位:11110000 a右移两位:1111
- 代码实现:
#include
int main(){ int a = 4; short b; double c; int *ptr;//定义一个指针 printf("a的大小:%ldn",sizeof(a)); ptr = &a;//将a的地址赋给ptr printf("*ptr的值:%dn",*ptr);//取地址对应的值 a = 10; b = (a == 10) ? 20 : 30;//三元运算符 printf("b的值:%d",b); } - 运行结果:
a的大小:4 *ptr的值:4 b的值:20
- 源码:0001
- 反码:1110
- 补码:反码加1 1111
- 作用:按位取反
- 代码实现:
#include
#include int main(){ int b = 13; //00001101 printf("%x",~b); } - 运行结果:
fffffff2 //11110010



