1.类型转化
隐式转化 5/3=1.00000 当赋值号两边类型不同时,自动转化精度较高的类型
显式转化 强制类型转化
2.位运算符
&:位与 4&3 0100 12&7 1100
0011 =0000=0 0111 =0100=4 对应位同时为1才为1
|:位或 4|3 0100 12|7 1100
0011 =0111=7 0111 =1111=15
:非(取反)23:~(0001 0111)
补码:1110 1000
反码:1110 0111
原码:1001 1000
原码:正数的原码是其本身
反码:符号不变,其他位取反
补码:负数的补码是其正数的原码取反加一
^:异或 不同为1,相同为0
<<:左移8<<2 1000 100000 =32 低位补零
8*2的2次 =32
:右移 与左移互逆
(1)二进制数:由0和1组成
(2)八进制数由0-7组成,以0开头
(3)十六进制数 由数字0-9和 A-F或者a-f组成 以0x或者0X开头
3.赋值操作符
+=
-=
*=
/=
%=
&=
|=
=
<<=
4.逻辑运算符
(1)&& 逻辑与 表达式1 &&表达式2 当表达式1、2都为真,结果为真
||逻辑或 表达式1 || 表达式2 当表达式1和表达式2只要有一个为真,结果为真。
!非 若表达式结果为真,则结果为假。
若表达式结果为假,则结果为真。
(2) 条件运算符
?:
表达式1? 表达式2: 表达式3
表达式1 为真执行表达式2 若为假执行表达式3
三者对比 a>b?(a>c?a:c):(b>c?b:c);
5.运算符优先级
括号成员第一
全体单目第二
乘除余第三
加减第四
位移第五
关系第六
等与不等排第七
位与,异或和位或八九十
逻辑或和与十二和十一
条件高于赋值,逗号运算符最低。
6.c语言的三大结构
顺序结构、分支结构、循环结构
分支结构
(1)if表达式 {......}
表达式为真则执行{}里的语句;为假不执行{}里的语句。
(2)if else
(3)if ...else if...else if... else
(4)
(5)if条件句后面只有一条语句时,可以不加{}。
{}内定义的变量 只在{}内有效
switch...case:
(1)switch(option)
{
case option1:
break;
case option2:
break;
......
default:
break;
根据option的值选择执行case语句,若没有与之对应的case语句执行default语句!
(2)注意事项:default可以放在switch{}内任意位置
case后面的{}可以不写,超过三条建议写上{}
(3)case语句中的break视情况而定写。
若没有break则顺次执行所有的case语句,直到把所有的case语句执行完,退出switch
循环结构
(1)while(表达式){执行语句}先判断后执行
break 退出循环 ,continue 跳过本次循环,进入下次循环
(2)do {}while();先执行后判断
(3)for(循环条件初始化:循环结束条件;循环步长)
注意:表达式1,2,3可以省略,或者全部省略。但是“;;”不可以省略!!!
=============================================================================
12.14
1.循环
for (表达式1;表达式2;表达式3)
执行顺序;
A表达式1
B表达式2,若2成立执行C;不成立执行E;
C循环体即{}的内容
D表达式3.执行B
E结束循环
2.数组的定义
DataType ArrayName [size];
数据类型 数组名 数组大小或者下标,必须是常量
[]:下标运算符
下标是从零开始到size-1
3.注释
(1) // 单行注释 放在上一行或者行末
(2) /......./ 相当于括号
(3)#if 0 。。。#else 。。。。#endif 0不可以执行
#if 1 。。。#else 。。。。#endif 1 可以执行
4.数组的存储
数组也是一种数据结构,数组中的元素顺序存储,数组中每个元素的类型
相同。
数组地址问题
int arr[5]
arr arr+0 &arr 地址一样
arr+1 &arr[0]+1 &arr+1
+4 +4 +20 十六进制下14
注释:arr:数组名,也代表数组元素的首地址,即第一个元素的地址
&arr[0]:数组元素的首地址,即第一个元素的地址
&arr:数组的首地址
arr+1和&arr[0]+1:表达意思一样,
地址偏移sizeof(arr[0])个字节
&arr+1:偏移量为sizeof(arr)个字节。
注意:数组若要初始化,必须在定义的同时初始化,不能先定义,后初始化。
define M 5 5替换替换成M,宏定义。
5.数组元素的定义赋值
6.char arr[16]={'h','e','l','l','o'}
buf[16]={"hello"}
数组名不能和变量名重复
二维数组(基于矩阵)
DataType ArrayName[行下标][列下标];
(1)初始化:
int arr[3][3] = {1,2,3};
int arr1[3][3] = {{1,2,3},{4,5,6}}
int arr1[][3] = {1,2,3,4,5,6}