美文网首页
C语言基础:逻辑运算符,位运算符,分支结构及循环结构

C语言基础:逻辑运算符,位运算符,分支结构及循环结构

作者: Hassan_chao | 来源:发表于2016-12-13 23:34 被阅读26次

    补充内容:
    基本数据类型转化
    5/3=1
    (1)隐式转化:
    float _f=int t/int _t1
    赋值号两边不同时,自动转化为精度较高的类型
    (2)显式转化:
    float_f = (float)int_t/int_t1
    强制类型转化,并不改变变量的类型,只做一次临时转化

    一、位运算符

    1、基本运算符

    &:位与
    //将10进制数,8进制数,16进制数转化为2进制数,进行位与运算,
    对应位同时为1时,结果为1,否则为0!!!
    一假则假

            0100
        &    0011
            0000
        12&7=4
            1100
        &    0111
            0100```
    |:位或  //一真则真
    ``` 4|3=7
            0100
        |   0011
        -------------
            0111
           13|9=13
            1101
        |   1001
        --------------
            1101
        023|5=23
            010110
            |   0101
        ---------------
               10111```
    
    ~:非(取反)
    ``` ~23:
            ~(0001 0111)
    ----------------------------
              0000 1000 ```
    计算机是补码存储的,原码输出!!
    原码:正数的原码是其本身
    反码:符号位不变,其他位按位取反
    补码:负数的补码是其正数的原码取反加1
        ```      ~0001 0111
        取反之后为:1110 1000//补码
                        1110 0111//反码
                    1001 1000//原码   ```
        
    
    
    ^:异或 ://不同为1,相同为0
    ``` 4^7=3
        0100
        0111
    ==============
        0011```
    <<:左移 转化为二进制,左移两位,低位补0;
    ``` 8<<3=64             //8*2^3=64
        <<  0000 1000
    -----------------------
            0100 0000
    

    :右移----与左移互相逆
    16>>3=2

    (1)二进制:由0和1组成,
    10101(2)=21(10);
    (2)8进制数:由0~7组成,八进制开头是数字0,以区分八进制数和十进制
    0345 0123 0765
    (3)由数字0~9和字母a~f或者A~F组成,并且,以0x开头
    0x123 oxab34
    (4)进制数转换
    2、&:位与
    //将10进制数,8进制数,16进制数转化为2进制数,进行位与运算,
    对应位同时为1时,结果为1,否则为0!!!
    一假则假
    4&3 =0
    0100
    & 0011
    0000
    12&7=4
    1100
    & 0111
    0100
    |:位或 //一真则真
    4|3=7
    0100
    | 0011
    -------------
    0111
    13|9=13
    1101
    | 1001
    --------------
    1101
    023|5=23
    010110
    | 0101
    ---------------
    10111

    ~:非(取反)
    ~23:
    ~(0001 0111)


          0000 1000 
    计算机是补码存储的,原码输出!!
    原码:正数的原码是其本身
    反码:符号位不变,其他位按位取反
    补码:负数的补码是其正数的原码取反加1
         ~0001 0111
    取反之后为:1110 1000//补码
                    1110 0111//反码
                1001 1000//原码   
    

    ^:异或 ://不同为1,相同为0
    4^7=3
    0100
    0111
    0011
    <<:左移 转化为二进制,左移两位,低位补0;
    8<<3=64 //8*2^3=64
    << 0000 1000


        0100 0000
    

    :右移----与左移互相逆
    16>>3=2

    2、赋值操作符

       +=,num+=i ;  //num=num+i;
       -=,
       *=,
       /=, 
       %=, 
       &=, 
       |= ,
       >>= ,
       <<=,```
    3、逻辑运算符和条件运算符
    (1)逻辑运算符  //成立返回1,不成立返回0;若条件1可得出结果,屏蔽后续运算。
       ```&&:逻辑与
                   表达式1&&表示式2  //当表达式1和2同时为真,结果为真```
       | |:逻辑或
                   表达式1||表示式2  //表达式1和表达式2,一真则真
       !:非
                       !表达式1     //表达式为真,结果为假
                                           //表达式为假,结果为真
    (2)条件运算符
       ``` ?:
           表达式1?表达式2:表达式3  //若表达式1为真,则执行表达式2,否则执行表达式3```
           a>b?a:b
           a>b?(a>c?a;c):(b>c?b:c)
       ++i;   --i  //单目运算符
       +,-//双目运算符
       ?://三目运算符
    5、运算符优先级    //简单方法;确定不了,就用“()”
       括号成员第一,全体单目第二,乘除余三,加减四;
       位移五,关系六,等与不等排第七;
       位与,异或和位或八九十;
       逻辑或和与十二与十一;
       条件高于赋值,逗号运算符最低
    ###二、C语言三大结构
    顺序结构,分支结构,循环结构;
       1、分支机构
    ```(1)if(表达式)           //注意if()后无“;”
           {...}       //表达式为真则执行{...}内的,为假不执行
    (2)if …..else
    (3)多重if
               else
           if
               else
           …
    (4)
    (5)使用if注意事项
       80<num<=90   //错误
       num>80&&num<=90  //正确```
    if条件句后面只有一条语句时,可以不加{},语句不能为变量声明语句。//变量只能在if中使用变量。
    例子:if
    ```If(1)
       printf(“hello\n”);
       printf(“world!\n”);```
    说明:if的有效语句只能是if后面第一句,
    在if(){  }中定义的变量,只能在{  }中使用,在{ }之外无效!!!
    
    2. switch….case
       (1)
           switch(option)
                   {
                   case option1;
                       break;
                   case option2;
                       break;
                       …...    
                   default:
                       break;      
                   }
    根据option的值,选择性的执行case语句,若没有与之对应的case语句,则执行default语句!
    (2)注意事项
    default可放{}任意位置
    case语句后的{}可以省略不谢,当case语句超过3条,建议加上{}!!!
    (3)case中的break视情况而定,是否写.若case语句无break,则顺序执行所有的case语句,知道把case语句执行完,退出switch
    ###三、循环结构
           while()         do…...while……           for(;;)
    1、
    

    while(表达式)  //先判断后执行

    //执行语句
    }```
    先判断条件是否满足执行条件,满足则执行循环体,不满足则退出循环。
    若条件满足则执行循环体,每执行一次循环体,则进行一次循环判断
    2、break/continue

    break:跳出当前循环
        continue:结束本次循环,进入下次循环```
    3、do{}while{}
            do
            {
                //循环体
            }while(表达式);
                现执行后判断
    4、for 循环
    

    for(表达式1;表达式2;表达式3)

    //循环体

    表达式1:循环条件初始化
    表达式2:循环结束条件,循环执行条件
    表示式3:循环步长,变量值的更新
    注:表达式1、2、3,可以部分或全部省略,但是“;;”不能省略!!!
    ##总结:今天的课程理解没有问题,书写规则问题不大。只是对于算法的应用还不够到位---即灵活使用的程度还不够,今天的作业还有一些疑点,正在解决。
    ##疑问和难点:灵活的使用算法,调用各种库函数,和自己编写库函数并调用的能力还不够,需要尽快学起来。

    相关文章

      网友评论

          本文标题:C语言基础:逻辑运算符,位运算符,分支结构及循环结构

          本文链接:https://www.haomeiwen.com/subject/mcobmttx.html