zoukankan      html  css  js  c++  java
  • <c和指针>学习笔记3之操作符,表达式与指针

    1 操作符

    (1)移位操作符

      左移<<:值最左边的几位丢弃,右边多出来的几个空位用0补齐

        01101101

       011(丢弃)01101000(后面三位补0)

      右移>>:

        算术左移和逻辑左移只有操作数是负值的时候才不一样。算术移位,左边移入的位由原先该值的符号位决定,符号位为1则移入的位均位1,符号为0则移入的位均为0,因为这样可以保证原来数的正负不变。

        10010110右移2位,逻辑移位为00100101,算术移位11100101

    案例1:

     1 //计算1的位的个数
     2 int count_one_bits(unsigned value)
     3 {
     4     int ones;
     5     for(ones=0;values!-0;value=value>>1)
     6     {
     7           if(value%2!=0)
     8           {
     9                 ones=ones+1;
    10           }
    11     } 
    12     return ones; 
    13 }        
    View Code

    (2)赋值

      赋值操作符的结合性是从右到左,也就是

        a=x=y=3<==>a=(x=y=3)

    (3)单目运算符

      sizeof是运算符,用来求操作数的类型长度,单位位字节。

      前++  表达式的值是操作数增加后的值

      后++  表达式的值是操作数增加前的值

    a = b=10

    c=++a// a增加到了11 c等于11

    d=b++ //b增加到了11 d仍然为10

    (4)逻辑操作符(&& ||)

      位操作符和逻辑操作符很容易混淆,逻辑操作符具有短路效应,意思是如果有两个条件,前面条件一旦满足,后面就直接不看了,它是用于测试零值和非零值。而位操作符是比较对应的位。

    a=1 b=2

    if(a&&b)为真

    if(a&b)为假

    (5)条件操作符

      expre1?expre2:expre3

      首先计算expre1,如果为真,那么整个表达式值为expre2,不会去执行expre3.如果expre1为假,那么整个表达式的值为expre3,不会求expre2.

    (6)逗号操作符

      表达式从左到右逐个求值,整个逗号表达式的值是最后那个表达式的值。

    2 指针

    (1)内存和地址

    主要是知道这两件事:

      内存中的每个位置由一个独一无二的地址标识

      内存中的每个位置都包含一个值

    (2) 指针 间接访问和变量

      *&a=25=====》把25赋值给a

      &操作符产生变量a的地址,指针常量,接着*访问其操作数所表示的地址

    (3)指针的指针

      int a =10;

      int *b=&a;

      c=&b;那么c的类型是什么,怎么声明

        int **c;相当于int *(*c) *操作符是从右向左结合

    (4)指针表达式

    char ch='a';

    char *cp=&ch;

    *cp+1----->'b' *的优先级高于+

    *(cp+1)----->ch后面的一个字符,再取值,理论上可以作为右值和左值,但是此处没有定义ch后面是什么。

    *cp++----->后缀++优先级高于*

    ++*cp----->通常可用于数组的遍历 先取得cp的值然后往后移动

    (*cp)++---->首先执行间接操作,结果是ch增值前的原先值

    ++*cp++----->从右往左结合,首先++cp,然后对这个值进行间接操作,然后执行++

        

  • 相关阅读:
    golang 引用相对路径package
    LiteIDE 在 Windows 下为 Go 语言添加智能提示代码补全
    C#代码实现把网页文件保存为mht文件
    AE开发中关于 “无法嵌入互操作类型.........请改用适用的接口”问题的解决方法
    Windows下visual studio code搭建golang开发环境
    Eclipse配置开发Go的插件——Goclipse
    go语言条件语句 if else
    Go语言基础:method
    GO语言基础之method
    go中的接口
  • 原文地址:https://www.cnblogs.com/lanjianhappy/p/10604324.html
Copyright © 2011-2022 走看看