- 1.算术操作符
- 2.移位操作符
- 2.1左移操作符
- 2.2右移操作符
 
- 3.位操作符
- 4.赋值操作符
- 5.单目操作符
- 5.1单目操作符介绍
- 5.2sizeof和数组
 
- 6.关系操作符
- 7.逻辑操作符

符号:+  -  *  / %
注释:
  + :用于整数和浮点数的加法
  - :用于整数和浮点数的减法
  * :用于整数和浮点数的乘法
  / :用于整数和浮点数的除法
  % :用于两整数相处取余数
注意:
  1.除了%操作符之外,其他的几个操作符可以用于整数和浮点数。
  2.对于/操作符如果两个操作符都为整数,执行整数除法,而只要有浮点数执行的就是浮点数除法。
  3.%操作符的两个操作数必须是整数,返回的是整除后的余数。
符号:<<  >>
注释:
  << :左移位操作符
  >>:右移位操作符
注意:移位操作符的操作数只能是整数
移位规则:
    左边抛弃,右边补0,相当于*2
移位规则:
    右移操作符分两种:
        1.逻辑移位
          左边用0填充,右边丢弃
        1.算术移位
          左边用原该值的符号位补充(第一位0表示正数,1表示负数),右边丢弃,编译器中通常是算术移位,有除以2的效果
补充:数据的存储
数据在内存中是以2进制的形式储存的,对于整数而言,整数的二进制有3种表示形式:原码,反码,补码。
  正整数:原码,反码,补码相同
  负整数:原码,反码,补码不同,要进行计算。负整数在内存中存储的是二进制的补码,打印的是这个数的原码。
1.按照数值直接写出的是二进制的原码
2.原码的符号位不变,其他位按位取反,就得到了反码
3.反码+1就是补码
例:-10的原码:1000 0000 0000 0000 0000 0000 0000 1010
        1111 1111 1111 1111 1111 1111 1111 0101–>-10的反码(符号位不变,其余位全部按位取反)
        1111 1111 1111 1111 1111 1111 1111 0110–>补码(反码+1就是补码)
符号:&  |   ^
注释:
  & :按位与 :二进制位与二进制位 (有一个为假,则为假)
  | :按位或:二进制位与二进制位 (有一个为真,则为真)
  ^ :按位异或:对应的二进制位相同,则为0 。对应的二进制位相异,则为1。
注:他们的操作必须是整数
例1:
注:num1:0000 0000 0000 0000 0000 0000 0000 0010
 num2:0000 0000 0000 0000 0000 0000 0000 0001
 num1 & num2:0000 0000 0000 0000 0000 0000 0000 0000—>十进制表示:0
 num1 | num2:0000 0000 0000 0000 0000 0000 0000 0011—>十进制表示:3
 num1 ^ num2:0000 0000 0000 0000 0000 0000 0000 0011—>十进制表示:3(相同为0,相异为1)
例2:
注:num1 的原码:1000 0000 0000 0000 0000 0000 0000 0011
  num1的反码:1111 1111 1111 1111 1111 1111 1111 1100
  num1的补码:1111 1111 1111 1111 1111 1111 1111 1101
  num2的原码:1000 0000 0000 0000 0000 0000 0000 0001
  num2的反码:1111 1111 1111 1111 1111 1111 1111 1110
  num2的补码:1111 1111 1111 1111 1111 1111 1111 1111
num1 & num2(补码):1111 1111 1111 1111 1111 1111 1111 1101
num1 & num2(反码):1111 1111 1111 1111 1111 1111 1111 1100
num1 & num2(原码):1000 0000 0000 0000 0000 0000 0000 0011—>十进制表示:-3
符号:简单赋值符: = 
  复合赋值符:+=  -=  *= /=   %=  >>=  <<=   &=   |=  ^=
int a = 1;
	a = 2;//简单赋值操作
double b = 3.0;
	b = 10.0 //简单赋值int a = 5;
	a = a + 5;
	a += 5;//复合赋值符
int b = 3;
	b = b - 1;
	b -= 1//复合赋值符符号:
   ! --------逻辑取反
   -   --------负值
   +  --------正值
   &  --------取地址
   sizeof --------操作数的类型长度
   ~ --------对一个二进制按位取反
   - -  --------前置,后置- -
   ++  --------前置,后置++
   *  --------解引用操作符
  &(取地址):
int a = 1;
int *pa = &a;//将变量a的地址保存在变量pa中,
			//pa指向a,此时pa是一个指针变量- -(前置,后置),++(前置,后置):
int a = 1;
int b = a++ // a = 2; b = 1 后置++:先使用,后++
int d = 2
int c = ++d// d = 3;c = 3 前置++:先++,后使用*(解引用):

sizeof(求操作数类型长度):
int a = 1;
printf("%d\n",sizeof(a));//result:4(字节)
printf("%d\n",sizeof(int));//result:4(字节)
printf("%d\n",sizeof a);//result:4(字节)
printf("%d\n",sizeof int);//错误:求类型的长度不能去掉括号sizeof:求变量(类型)所占空间的大小
符号:>  >= < <=   !=   ==
注意:1.编写程序代码时一定要注意 = 和== 的区别,不要写错,= 是赋值操作,而 == 才是判断
  2.判断字符串是否相同时,应该用strcmp()函数,而不能用==比较
符号:&& ||
  && ------------逻辑与操作(只要有一个表达式为假便为假,不再执行后面的表达式)
  | | ------------逻辑或操作(只要有一个表达式为真便为真,不再执行后面的表达式)
区分逻辑与和按位与
区分逻辑或和按位或
1 && 2 = 1;//逻辑与,两个全真结果才为真
1 & 2 = 0;//按位与(按二进制计算)
1 || 2 = 1;//逻辑或,只要有一个为真便为真
1 | 2 = 3;//按位或(按二进制计算)你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前题目:C语言操作符总结-创新互联
网页路径:http://www.scyingshan.cn/article/diijse.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 