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 <90 //错误
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可以任意省略,或全部省略
但是,“;;”不能省略!!!
今天开始进行编程了,学习的东西都有大概的印象,需要用课后的时间多加练习,熟悉掌握它们。加油!!!
网友评论