SQSH1616 12-13 C基础

1.类型转化
(1)隐式转化:
当赋值号两边类型不同时,自动转化为精度较高的类型
5/3 = 1.00000
9.120000/5 = 1.824000
(2)显式转化;
强制类型转化,并不改变变量的类型,只临时做一次类型转化
float_f = (float)int_t/int_t1
2.位运算符
1. &:位与
|:位或
~:非(取反)
^:异或
<<:左移
>>:右移
(1)二进制数 :由0和1组成

2^0 2^1 2^2 2^3 2^4 2^5 2^6 2^7 2^8 2^9
1 2 4 8 16 32 64 128 256 512

101010= 0 + 2^1 + 0 + 2^3 + 0 +2^5

(2)八进制数:由0~7组成的,八进制数开头是数字0,以区分八进制数
0345 0123 0765 04321
(3)十六进制数:由数字0-9和数字af或者AF组成,并且以0x或者0X开头
0x123 0xab34 0XAB345 0XFFF
(4)进制数
二进制数:1111
十进制数:1111----->8+4+2+1=15
111----->4+2+1=7

二进制 十进制 八进制 十六进制
0000 0 0 0
0001 1 1 1
0010 2 2 2
0011 3 3 3
0100 4 4 4
0101 5 5 5
0110 6 6 6
0111 7 7 7
1000 8 8
1001 9 9
1010 10 a/A
1011 11 b/B
1100 12 c/C
1101 13 d/D
1111 15 f/F

(5)
10101011:171,0253,0xab(0XAB)
0123:001 010 011
0XA45:1010 0100 0101
(6)位操作
&:位与
将十进制数,八进制数,十六进制数转化为对应二进制数,进行位与运算!!!
4&3 = (0100 &0011) = 0000
12&7 =(1100 &0111) = 0100
即对应位同时为1时,结果为1,否则为0!!!
|:位或
4|3 = (0100 |0011) =7
023|5 = (0010 0011 | 0101) = 10111
13|9 = (1101 |0101) = 1101=13
即:对应位只要有1,则为1;同时为0,才为0!!
~:非(取反)
~23: ~(0001 0111)
-------------
23:0001 1000
补码1110 1000
反码1110 0111
原码1001 1000
计算机是补码存储,原码输出!!!!
原码:正数的原码是是本身
反码:符号位不变,其他位按位取反
补码:负数的补码是其正数的原码取反加1.

^:异或

         4^7 =
             0100
            ^0111
            -----
             0011
             3
        4^3 =
             0100
            ^0011
             ----
             0111
             7

<<:左移

         8<<2
          1000
          <<2
          100000
          32
      4<<4
          0100
          <<4
          100000
          32
          即转化为二进制,然后左移

然后 >>:右移

          8>>2
          1000
          >>2
          0010
          2
      4>>4
          0100
          0000.01
          0  
          即转化为二进制,然后右移

3.赋值操作符:=
+=
num += i;----> -= *= /= %= &= |=
4.逻辑运算符和条件运算符
(1)
&&:逻辑与
表达式1&&表达式2
当表达式1和表达式2同时为真,结果为真
||:逻辑或
表达式1||表达式2
表达式1和表达式2只要有一个为真,结果为真
注意:只要有一个为真,即可!
!:非
!表达式
若表达式为真,作为结果为假
反之,则真
(2)条件运算符
?:
表达式1?表达式2:表达式3
若表达式1为真,则执行表达式2,否则执行表达式3
a>b?a:b
a,b,c---->max
a>b?(a>c?a:b):(b>c?b:c)
5.运算符的优先级
括号成员第一,全体单目第二,乘除余三,加减四;
位移五,关系六,等与不等排第七
位与,异或和位或八九十
逻辑或和与十二和十一
条件高于赋值,逗号运算最低!
二.C语言的三大结构
顺序结构、分支结构、循环结构
1.分支结构
(1)if(表达式)
{.....}
表达式为真则执行{}里的语句;
若为假,则不执行{}里的语句;
(2)if.....else
(3)if
else if
else if
(4)if的嵌套使用
练习:
使用if的注意事项
80 num>80 && num<=90 //ok
if条件句后面只有一条语句时,可以不加{};但此语句不能是变量定义语句。
例子:
if(1)
printf("hello\n") ;
printf("world!\n") ;
说明:if的有效语句只有:printf("");

    在if(1)
    {
       printf("hello\n");
       int num = 0;
       printf("num = %d\n,"num);
       }
       printf("num = %d\n",num);    //错误            

2.switch....case

    (1) switch(option)
      {
          case option1;
          break;
          case option2;
          break;
          case option3;
          break;
          default;
          break;
          }

根据option的值选择性执行case语句,若没有与值对应的case语句,则执行default语句!
(2)注意事项:
default语句可以放在switch{}里面的任意位置;
case语句后的{},可以省略不写,当case后的之后的执行语句超过三条,则建议加{}。
(3)case语句中break视情况而定是否写;
若case语句中无break。则顺次执行所有的case语句
直到把所有的case语句执行完毕,退出switch!*/
三、循环结构
while() do{}while() for(;;)
1.while (表达式)
{
//执行语句
}
先判断条件是否满足执行条件,满足则执行循环体,
不满足则退出循环!
若满足条件,则执行循环体 ,每执行一次循环体
进行一次条件判断

先判断后执行
2.break/continue
break:跳出当前循环
continue:跳过本次循环,进行下一次循环
do{}while()
do
{
//循环体
}while(表达式);
先执行后判断
3.for(;;)
for(表达式1;表达式2;表达式3)
{
//循环体;
}
表达式1:
循环条件初始
表达式2:
循环结束条件或者循环执行条件
表达式3:
循环步长或者变量值的更新
主:表达式1,2,3可以任意省略,或全部省略
但是,“;;”不能省略!!!
今天开始进行编程了,学习的东西都有大概的印象,需要用课后的时间多加练习,熟悉掌握它们。加油!!!

你可能感兴趣的:(SQSH1616 12-13 C基础)