一.基本数据类型
1. 数据类型划分
(1)基本数据类型:整形(int , short,long) 浮点型(float, doubt) 字符型(char)
(2)构造数据类型:数组,指针,结构体,枚举,共用体
2. 基本数据类型的基本知识(32位系统)
(1) 整型:short 2字节,int 4个字节,long 4个字节
类型的含义:用于存放整数,
有符号(int)-2^31 ~+2^31 -1
有符号(unsigned int)0~2^32-1 (4294967295)
格式控制符:%d %o %x %#x %u %ld %lu
类型的含义:存放字符,数字
有符号:(char) -128~127
无符号:(unsigned char)0~ 255
格式控制符: %c %d
float 4个字节 单精度 保留小数点后6位
doubt 8个字节 双精度 保留小数点后12位
类型的含义:存放小数
格式控制符: %f %lf
3.进制转换
如:44 对应二进制 100 100 二进制从低位起每三位对应一个八进制数
十六进制数据的1位对应二进制数据的4位
如: 87 对应二进制为 1111 0111 二进制从低位起每四位对应一个十六进制数
源码:1111 0111
反码:1111 0111
补码:1111 0111
源码: 1 011 0111
反码: 1 100 1000 负数的最高位为符号位固定取1,其他为根据源码取反。
补码: 1 100 1001 符号位不变,反码+1
注意:补码转源码也可以取反加1(取反后得到的不是反码)
1.赋值运算符(=)(单目运算符)
(=) : 将右边的数值赋值给左边
注意事项:左值必须是变量
2. 算术运算符
+ - * / %(基本上与数学上一样,%有不同)
(%): % 取余/求余 取余数只能使用整数进行求余运算
除法运算结果的精度和除号两端精度较高的数据保持一致
3. 关系运算符
> < == != >= <= (他们的运算结果要么为0,要么为1)
(==):if语句中常用符,表示两个数是否相等
4. 逻辑运算符
&& (逻辑与) || (逻辑或) !(逻辑非)(逻辑运算结果也是只有真假 1 0 )
&& :表达式1 && 表达式2全真才为真,有假就是假,在实际使用中,如果表达式1不成立,表达式2不再运行
|| : 表达式1 || 表达式2有真就是真,全假才为假,在实际使用中,如果表达式1成立,表达式2不再运行
!: 表达式 真变假 假变真
5. 位运算
& (按位与) | (按位或) ~ (按位取反) ^ (异或相同为0)
<<(按位左移) >> (按位右移)
位运算:所有的运算都要按照二进制的形式进行
6 . 复合运算符 (双目运算符)
+= -= *= /= %= &= |= ~= ^= <<= >>=
运算符的优先级问题:复合运算符的优先级和赋值运算符一样了,都变低了。
7. 自增自减
++ --
++:自增 增加1 --:自减 减少1
a++;//a的值增加1 ++a;// a的值增加1
a--;// a的值减少1 --a;// a的值减少1
当不涉及第三方变量赋值的时候,++在前在后是一样的,运算结果都是数值增加1
当涉及第三方变量赋值的时候,++在前在后有区别
8. 条件表达式(三目运算符)
?:
(表达式1)?(表达式2):(表达式3)
判断表达式1的结果,如果为真,那么整个表达式的结果是表达式2的结果,如果为假,那么整个表达式的结果是表达式3的结果。
9 . sizeof运算符
sizeof 运算符
作用:求任意对象的大小
任意对象:数据类型 变量
大小:实际占用内存空间的大小
1.标准输入(scanf)
scanf:从键盘读取数据到程序
scanf(“格式控制符1…”,变量1地址,变量2地址。。。);
格式控制符:
%d 读取整数
%c 读取字符
%s 读取字符串
%f 读取浮点数
scanf的双引号里边,写的内容只要格式控制符,不要出现其余内容。
注意:scanf括号里边最好不要写多个变量地址好格式控制符,一到两个就行,双引号里边,写的内容只要格式控制符。
2 . 标准输出(printf)
printf函数从程序输出数据到屏幕(终端)原样输出
printf(“要输出的内容”);
printf(“hello world\n”);
格式化输出—》输出变量将变量按照固定的格式转化为字符串,并且打印在屏幕上。
printf(“格式控制符1…”,输出变量1,输出变量2…);
注意事项:格式控制符的数量和输出变量的数量要求一一对应。
格式控制符:
%d:以十进制形式输出数据
%c:输出字符
%s:输出字符串
%o:八进制形式输出
%x:十六进制形式输出
%#x:十六进制形式输出,前边添加0x
%f:输出浮点型数据 单精度 float
%lf:输出浮点型 双精度 double
%u:无符号类型
%p:输出地址
-
控制语句类型
顺序结构 , 判断结构 ,循环结构
2 . 判断结构
if(条件1)
{
语句1;
else
{
语句2;
}
switch…case…
switch(变量)
{
case 常量1:语句1;break;
case 常量2:语句2;break;
…..
case 常量n:语句n;break;
default:语句n+1;break;
}
3. 循环结构
一件事情重复多次运行
起始条件:决定了循环什么时间开始
循环条件:决定了循环什么时间结束
条件修正:决定了循环执行多少次
循环体:决定了循环做什么事情
从起始条件开始,判断循环条件,条件满足,就执行循环体,执行条件修正,再次判断循环条件,条件满足,执行循环体,不满足,就结束。
for(始条件;循环条件;条件修正)
{
循环体;
}
起始条件;
while(循环条件)
{
循环体;
条件修正;
}
for循环和while循环无差别的,可以使用for循环实现,也可以使用while循环实现。
起始条件;
do
{
循环体;
条件修正;
}while(循环条件);
while和do…while的区别
while循环是先判断循环条件,再执行循环体,如果循环条件不满足,直接结束。
(4)Return(结束语句)
无论程序在做什么,遇到return,立刻结束。返回值给调用者
(5)goto
跳转到程序的任意位置去执行
使用方法:goto 标识;
跳转到标识的位置去执行
标识的定义方法:
基本原则还是符合C语言命名原则,在命名后边加上冒号,就变成了一个标识。
(6)break
跳出switch语句
switch(变量)
{
case 常量1:语句1;break;
….
default:语句n;break;
}
跳出循环
遇到break,循环结束
(7)continue
继续
结束本次循环,开始下一次循环