1-11存储
bit位,byte字节:8bit=1byte
1KB=1024byte
1MB=1024KB
1GB=1024MB
1-12内存
内存>固态硬盘>机械硬盘
内存东西断电不保存
虚拟内存:硬盘读取暂时不用的内存,内存数据写入硬盘,硬盘中有一部分内存内容
65~90是大写
97~122是小写
2-3源文件
保存好的代码写入源文件中
2-4编译链接
编译:转换为二进制
链接:和系统组件组合起来变成可执行文件
集成开发软件:一系列开发软件的组合套装
2-15第一个程序
main是函数的名字,()表明这是函数定义,{}之间的代码是要实现的功能
int main()
#include命令的作用是将头文件的文本复制到当前文件,然后和当前文件一起编译。
2-16空白符
puts 和(),( )和“”之间可以有任意空白符合
字符串之间不能换行
int a;
a=10;
a=99;
int a=99;
3-1 3-2 3-3变量和数据类型
数据类型:有多种解释法,定义数据类型之后可以正确解释。
连续定义多个变量:用逗号隔开
int a,b,c;
float c,d;
char p,q='@'
字符型:1
短整形:2
长整形/整型:4
单精度浮点:4
decimal十进制
%c:输出一个字符
%s:输出一个字符串
%f:输出一个小数
%d,a
a=%d,a
%ds s会自动跟着输出,没有意义。
在put函数中,一个字符串可以分成几个字符串
short long 没有明确表示,有可能和int一样长
short int long
%hd:短整型
%ld:长整型
int int _length()=sizeof (a);
int short_length()=sizeof(b);
二进制以0B/0b开头
八进制以0开头 %o
十六进制以0X/0x开头
ho o lo
he d ld
hx x lx
(十六进制大小写对应英文字母的大小写)
通过转换成二进制数并以字符串的形式表示,用%s表示
在ho hx前加上#即可输出ho. hx区分不同进制的数字
用最高位表示符号位
用0表示正数,用1表示负数
unsigned无符号位,存储更大,只表示正数
unsign n=
unsign int n =(省略int也可以)
%u 输出十进制无符号数
八进制十六进制不能输出负数,因为在前面+1,最高位变成1,会改变原数值。
3-5正负数
unsign int=
unsign short=
unsign long =
printf("a=%#ho")
3-8小数
2.1E5
E分割,2.1是小数,5是指数
%f浮点型 %lf双精度型(默认保留6位,)
%e指数形式,e小写
%E指数形式,E大写
%le双精度,指数小写
%lE…
%g对比十进制和指数形式,输出最短占用最小
尾数部分0~10
%g保留六位,包括正数和小数,不会补0,很有弹性
%f %e:只保留小数后六位. 并且会在最后面补0变成6位
%g%lg当以指数形式输出时e
%G%lG以指数形式输出时E
整数默认为整型,小数默认为双精度
long a=10 先从整型变成长整型
如果想定义数字类型,可以给数字加上后缀
I L 常整型
Ff浮点型
并不意味着只能赋值给这个类型,还可以赋值给其他类型,只要进行类型转化
int a=45. 56;
float b= 45;
printf("a=%d,b=%f")
字符由"字符串由” ”
3-10英文:
全角字符和半角字符不同,是两个字符
输出char 使用 printf("a=%c")
putchar(“”)输出单字符
abcd存储的是整数
当赋值为字符时,转换为数字
当%c时,转换为字符
当%d时,直接输出
字符串:
int A[ ]=" "
int *A = " "
("…"…" …")三个都可以输出
3-13转义字符
数字48-55
大写英文 65-87
小写英文 97-119
ASCII一共有128个,从0-127
用编码表示
\跟八进制,\x跟十六进制
八进制最大\177
十六进制最大\x7f
\t用来占位
单引号是字符类型的开头结尾,用'\'表示
双引号是字符串的开头结尾,用"\”表示
反斜杠\\是转义符号的开头 abc\\123
3-14重要概念
标识符:变量名字
关键字:函数名字
表达式:一定为一个值
语句:以分号结束
3-15运算符自增自减
int a= 12 , int b= 1;
int c= a-(b--) (11)
int d=( ++a )-(--b) (14).
整数/整数为整数
被除数或者除数有小数类型的,所得结果为双精度小数
scanf从控制台读取数据,赋值给ab
取余运算:%左右两边都是整数
%左边为-,结果为-(只看两边)
%是一个特殊的字符,不能输出,%%可以输出%
printf("100%12=%d\n
"-100%-12=%d\n")
从左到右
4 -4
a=a#b a#=b
a+=10 a=a+10
左结合性,右结合性
一个运算符需要n个操作符就称为n目运算
++ --是单目运算
?:是三目运算
3-19数据类型转换
自动转换数据类型:(不需要程序员干预,自己转化)
按照数据长度增加的方向进行,保证数据不失真,精度不下降。int long 变成long
char 和short 变成int
浮点运算以双精度进行
强制类型转换:
(type name)expression
(float)(x+y)把x+y的整型转变成float
整/整=整
(double sum)a/b先将a变成双精度算
转换只是临时性的,并不会改变原来的值,只是为了本次临时运算
需要强制转换的类型不一定能够自动转换
可以自动转换的类型一定可以强制转换
强制转换风险高
int total_int=(int)total强制转换
4-1数据输出大汇总:
%g %lg %G %lG以较短的形式输出,不添加0
%s 输出字符串
printf高级输出
格式控制:
%[flag][width][precision] type
type 不可省略
width表示最小的输出宽度
当没有满足时用空格补齐,默认左补0,超过时直接接着输
precision
输出精度:超过时四舍五入丢掉,不足时在后面补
用于整数时,表示最小的输出宽度(前面补0)
用于字符串时,表示最大的输出宽度(斩断小数点后面的位数)
4lf是最大输出宽度为4双精度
flag:标志符号
-左对齐(默认为右对齐)
+:用于表示正负
空格:用于整数或者小数,正时为空,负时为负号
#:八进制前加0和十六进制前加0x,小数一定要加小数点
"m=%10d m=%-10d\n"(右对齐,左边补空格,左对齐,右边补空格)
"f=%0f f=%#0f"(删掉小数点后面的数字,第二个保留小数点)
4-3scanf读取数据
输入:
scanf()用于多种输入
gets():用于获取一行数据当做字符串处理
getchar()getche()getch()输入单字符
scanf("%d %d",&c, &d);%d与%d之间有空格,赋值时也要空格
输入数据的格式要和控制字符床的格式保持一致
%p表示以小写的十六进制输出数据的地址,P则表示以大写的前缀输出数据的地址
scanf对空格要求低,不需要精确
控制字符串",,,"中间以逗号分隔,所以输入的整数也要以逗号分开
scanf要求整数之间以is bigger than 分开,只要每次按下回车键,scanf开始读取并提取有效值
我们从键盘输入的数并没有直接放入scanf(). 而是交给了缓冲区,直到我们按下回车键,scanf()才到缓冲区读取数据。
输入不符合要求的数会导致读取失败,无法改变初始值
连续输入:缓冲区?
输入其它数据:
scanf("%c,&letter")
scanf("%d,&age")
scanf(%s,url)
scabf(%f,&price)
char str1[ ]="";
char* str2=“ ”;
第一种有读写和编辑功能,输入输出函数。第二张只有读写功能,只能输出函数。
输入字符串时不用取地址,因为系统会自动取地址。
字符串在括号里要指明长度,char url[ 39 ]
scanf 以字符串中的空格为结束
不能读取含有空格的字符串。
f小数
e指数
g都可以
4-4输入字符和字符串:
gatchar 是专门用来输出单个字符的scanf的简化版
getche:不用按回车键立刻输送,只存在<conio.h>头文件中 @c:@
getch:不用回车,没有回显。存在于<conioh.h>中 c:@
scanf( ) getchar( ) gets( )标准函数,适用于所有
getche( ) getch( )不适用于所有系统
getchar scanf:有有
getche:无,有
getch:无 无
gets:可以读取有空格的字符串,回车代表结束
scanf 可以一次读取多种字符串,其它函数一次只能读取一份特定的数据
5-1循环语句:
#include<stdio.h>
int main
{
int age;
printf("请输入你的年龄");
scanf("%d,&age");
if(age<18)
{
printf("欢迎使用");
}
else
{
printf("请退出");
}
return 0;
}
1.if (判断语句) max=a;
else max=b;
2.只使用if语句,不遵循就跳过
多个 if else 语句(只执行其中一条,一旦符合就跳到循环外部)
多个判断语句
if(判断语句1){
}
else if(判断语句2){
}
else if(判断语句3){
}
else{
}
else和最近的if配对
if的判断语句中不一定需要判断运算符,可以是一个变量,赋值运算符
如if(b) 如果b的值为0则为假不执行,b的值不为0则执行
if(b=5)先把5赋值给b,再判断,结果永远是1
if(a=b) 把b的值赋给a,如果为非0则输出该值,为0则输出a=0
5-2C语言关系运算符:
==等于 !=不等于
双目运算符结合性都是左结合性