C语言运算符的基本概念及用法

一、运算符的类型:

算术运算符、 逻辑运算符、关系运算符、位运算符、赋值运算符、 递增递减运算符、地址运算符、逗号运算符、sizeof运算符、三目运算符

1.算术运算符

+    -     *      /     %(只能是整形数值)   

2.逻辑运算符

逻辑与:&&   逻辑或:||   逻辑非:!

真,假: 非零为真, 零为假


逻辑与:&&    全真为真, 有假就假 

表达式1   &&   表达式2
真              真         真
假              真         假
真              假         假
假              假         假
 

逻辑或:||    有真就真, 全假才假
表达式1   ||   表达式2
真               真         真
假               真         真
真               假         真
假               假         假


逻辑非:!
!(表达式)
如果表达式为真, 整体为假
          假        真
          
          
          
短路法则:
        逻辑与,如果对一个表达式为假, 那么整体为假, 后面的表达式不会执行
        逻辑或,如果对一个表达式为真, 那么整体为真, 后面的表达式不会执行

3.关系运算符

>   <   ==     >=     <=      != 

4.位运算符

>>  <<   &  |  ~  ^

&:
   1&1=1   1&0=0  0&1=0  0&0=0 
|:
   1|1=1   1|0=1  0|1=1  0|0=0
~:
   ~0 = 1   ~1 = 0    
       
^: 1^1=0  1^0=1  0^1=1  0^0=0 
   任意两个整形数值异或自己等于0
       
正数三码合一    
原码:最高位作为符号位, 其余位表示数值位 
     0的原码有两个表达:
     +0  00000
     -0  10000
    
     +7  0000 0111
     -7  1000 0111
    
反码:符号位不变,其余为取反
     +7  0000  0111     
     -7  1111  1000
    
补码:在反码的基础上加1(比原码多了一个-2^n) 
     +7 0000 0111
     -7 1111 1001
    
    带符号的补码表示范围(-2^n-1 ~ (2^n-1)-1)
    
        
补码转原码:
        (1)逆推
        (2)补码的补码就是原码
    
这里说的是补码的左移右移:         
<< :  
     左边移出,右边补零    
          
>> :  
      右边移出,左补符号位
          
      
          
单片机:把某几位清零,把除了某几位清零 
          ......1101 1110    5、6位清0  11
          ......0011 0000    <<4
          ......1100 1111     ~
          ......1100 1110    和原数进行位与运算

5.赋值运算符

 =  +=  -=  *=  /=  %=
        
  a = 10; 
  a += 5;  a = a + 5;
  a -= 5;  a = a - 5;
  a *= 5;  a = a * 5;
  a /= 5;  a = a / 5;
  
  a += b + c;  a = a + b + c;
  a *= b + c;  a = a * (b + c); 


注意:等号的左边不能为常量(常量不能做左值)

6.递增递减运算符

++  --
    
a++;  a = a + 1;    
++a;


1.++ -- 独自成句
 
    
2.参与运算 
  前++ 前--, 先进行自增自减运算,再取值;  
  后++,后--, 先取值, 再进行自增自减运算  
    
eg:
    int a = 10, b = 20, c;
    c = ++a + b--;
           
3.在函数中使用
    a=10;
    printf("%d,%d,%d,%d,%d",++a,a--,a,++a,a++); 
                            12  12  12 12 10 
                                
   前++、--、 a, 在内存中取值(运算完)
   后++、--  ,在寄存器中取值 

7.逗号运算符

表达式1, 表达式2, ..., 表达式n)  小括号里面的表达式都会执行;整体的值为最后一个表达式的值。

8.sizeof运算符

计算数据类型的大小  --- 字节

9.三目运算符

用于简单的选择判断    

  表达式1 ? 表达式2 : 表达式3
    
        
eg:
    int a = 10, b = 20, c;
    ptintf(“%d”, a > b ?  a : b);  

10.地址运算符

&

  • 37
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值