c语言操作符

c语言操作符的分类:

算术操作符,移位操作符,位操作符,赋值操作符,单目操作符,关系操作符,逻辑操作符,条件操作符,逗号表达式,下表引用、函数调用和结构成员

算术操作符: +    -    *    /(除)    %(取余)

1.对于除 / 来说,只要有浮点数执行的就是浮点数除法,只有当两个操作数都为整数时候,才执行整数除法。

   / 运算结果取的是商值,不遵循四舍五入的规律,只保留整数部分。如3/2=1.5   输出的是 1

   用法:可以实现对一个数的降位,比如153不断除10,可以依次得到15,1。

2. %两边的操作数必须都要是整数,返回的是整出后的余数。

   用法:可以用来实现对数字的拆分,比如153 对10取余  得到3,153对100取余 得到53。


移位操作符:<< (左移操作符)     >>(右移操作符)

左移操作符规则:移位移动的是二进制位;左边抛弃,右边补0;

例如;int num = 10;

          num<<1;

         10 的二进制表示形式为   00000000 00000000 00000000 00001010

          左移一位结果                000000000 00000000 00000000 00010100 (结果是十进制的20)

    注意: num在没有被赋值的情况下,自身的值没有发生变化,仍然是10。

               对比左移前后的变化,可知,左移1位,每位二进制的数是移动前的2倍。同理,左移2位,结果变成原来的4倍。

              因此,左移 N 位, 结果是 原来数值的 2的N次方倍。

右移操作符

移位规则:取决于编译器。

右移运算分为两种:(1)逻辑移位:左边用0填充,右边丢弃。  (2)算术位移:左边用改原值的符号位填充,右边丢弃。

注意:比较两种移位规则,算术位移更加合理,更符合思考问题的方式,而逻辑位移容易发生改变 数值正负的情况,属于暴力移 位,不符合逻辑。

         对于移位运算符,不能移动负数位,因为这个是标准未定义的。


位操作符:

&     按(二进制)位与       规则:二进制的对应位上,有0出0,全1出1

|       按(二进制)位或       规则:二进制的对应位上,有1出1,全0出0

^     按(二进制)位异或     规则:二进制的对应位上,相异为1,相同为0

注意:他们的操作数必须都是整数。

规则:有0为0,全1 出1

按位与的特点:若(a&1)得到1,则a的最后一位为1;
                        若(a&1)得到0,则A的最后一位为0;
按位异或的特点:a ^ a 得到 0;


赋值操作符:

就是赋值:=、+=、-=、/=、%=、>>=、<<=、&=、|=、^=。

例如,a = a+ 10   可以写成 a+=10;


单目操作符:

!  逻辑反 操作

-    负值

+  正值  

&    取地址

sizeof    操作数的类型长度(以字节为单位)

~      对一个二进制按位取反

--     前置、后置--

++   前置、后置++

*    间接访问操作符(解引用操作符) 

(类型) 强制类型转换        

注意:非0即真,只有0表示假。 1,-1,表示的都是真。!(-1) 表示的是假。

          sizeof  是操作符,不是函数。  sizeof( 表达式) 中表达式不参与计算,  例如,表达式为s = a +b   事实上s的值没有发生改变,不是(a+b)。

           前置++:先++后运算;       后置++:先运算后++           

          & 取地址操作,取的是变量,用%p 
                                int a=10;
                                printf("%p\n",&a);    取得是a 的地址;

关于数组的取地址: int arr[10]={0};

     printf("%p\n",arr); 取得是数组首地址  ;

     printf("%p\n",&arr);指向数组首地址地址;

     printf("%p\n",arr+1);指向首元素下一个元素的地址;

     printf("%p\n",a&rr+1);指向的是数组的末尾地址;

关系操作符:>,> = 、<、<=、!=、==。

注意:=  是赋值运算;==用来判断相等


逻辑运算符:

&& 逻辑与      规则:有0出0,全1 出1

  || 逻辑或        规则:有1出1,全0 出0

需要格外注意的是:

对于多个逻辑与 && 的运算,比如 A&&B&&C,    如果A&&B值 为假,判断就停止了,不用继续往后计算。如果为真,需要往下继续运算。

对于多个逻辑或  || 运算, 比如A||B||C,如果A||B 为真,判断就停止了,不用继续往后计算。如果为假,则需要继续往后判断。

  

逗号表达式:

exp1 , exp2 ,exp3....

逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

比如:

int a = 1;

int b = 2;

int c = (a>b, a = b + 10,  a, b =a + 1); 



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值