C语言操作符总结

C语言操作符总结


算术操作符

+ - * / %

1.%操作符的两个操作数必须为整数,返回的是整除后的余数。 
2.对于 / 操作符,如果两个操作数都是整数则执行整数除法,只要有浮点数就执行浮点数除法。

移位操作符

<< 左移操作符 
>> 右移操作符

左移操作符移位规则:

左边抛弃,右边补0

右移操作符移位规则:

右移分为两种: 
1.逻辑移位 
左边用0补,右边丢弃 
2.算术移位 
左边用原来的符号位填充,右边丢弃(符号位中0表示正号,1表示负号) 
大多数编译器都是用的算术移位。 
**对于移位运算符,不要移动负数位,这个是标准未定义的**

位操作符

& 按位与 
010101010 
101011101 
000001000
 
| 按位或 
0101010101 
1010101010 
1111111111
 
^ 按位异或 
101001011 
011001101 
110000110

他们的操作数都必须是整数 
可以用按位异或来实现两个数的交换

    
    
  1. #include <stdio.h>
  2. int main ()
  3. {
  4. int a = 10;
  5. int b = 20;
  6. a = a^b;
  7. b = a^b;
  8. a = a^b;
  9. printf("a = %d,b =%d\n",a,b);
  10. return 0;
  11. }

赋值操作符

    
    
  1. int a = 10;
  2. int b = 20;

复合赋作符

+= //i += 1相当于 i = i + 1 
-= 
*= 
/= 
%= 
>>= 
<<= 
&= 
|= 
^=

单目操作符

! 逻辑反操作 
- 负值 
+ 正值 
& 取地址 
sizeof 操作数的类型长度(以字节为单位) 
~ 对一个数的二进制按位取反 
--
 前置、后置++ 
* 间接访问操作符(解引用操作符) 
(类型) 强制类型转换

i++ 是先用在加 
++i 是先加在用 
i--和--i同理

关系操作符

>= 


<= 
!= 
== 

在编程中我们一不小心会把==写成=,所以我们把常量写在变量的前面 
比如:

    
    
  1. if (1 == num)

逻辑操作符

&& 逻辑与 
|| 逻辑或

&& 全真为真,有一个为假就是假。 
当几个 && 连用时,从左向右依次判断,若判断为假时,后面的运算就不执行了。 
如:i = exp1 && exp2 && exp3 当exp1 = 0 时,后面的运算就不执行了

    
    
  1. *举例*
  2. int main()
  3. {
  4. int i = 0,a=0,b=2,c =3,d=4;
  5. i = a++ && ++b && d++;
  6. printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
  7. return 0;
  8. // a = 1 b = 2 c = 3 d = 4
  9. }

|| 有一个为真则为真。 
当几个 || 连用时,从左向右依次判断,若判断为真时,后面的运算就不执行了。 
如:i = exp1 && exp2 && exp3 当exp1 != 0 时,后面的运算就不执行了

    
    
  1. *举例*
  2. int main()
  3. {
  4. int i = 0,a=0,b=2,c =3,d=4;
  5. i = a++||++b||d++;
  6. printf("a = %d\nb = %d\nc = %d\nd = %d\n", a, b, c, d);
  7. // a = 1 b = 3 c =3 d = 4
  8. return 0;
  9. }

条件操作符

x = a>5 ? 3: 4

    
    
  1. *举例*
  2. int main()
  3. {
  4. int a = 5;
  5. int b = 3;
  6. int max = a>b?a:b;
  7. printf ("max = %d\n",max);
  8. // max = 5
  9. return 0;
  10. }

逗号表达式

exp1,exp2,exp3,...expN 
从左向右依次执行,整个表达式的结果是最后一个表达式的结果

    
    
  1. *举例*
  2. int main()
  3. {
  4. int a = 1;
  5. int b = 2;
  6. int c = (a>b, a=b+10, a, b=a+1);
  7. printf("c = %d\n", c); // c = 13
  8. return 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值