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

补充内容:
基本数据类型转化
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语言基础:逻辑运算符,位运算符,分支结构及循环结构)