补充内容:
基本数据类型转化
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,可以部分或全部省略,但是“;;”不能省略!!!
##总结:今天的课程理解没有问题,书写规则问题不大。只是对于算法的应用还不够到位---即灵活使用的程度还不够,今天的作业还有一些疑点,正在解决。
##疑问和难点:灵活的使用算法,调用各种库函数,和自己编写库函数并调用的能力还不够,需要尽快学起来。
网友评论