c语言第一课学习笔记--c语言介绍,变量常量,printf,scanf的用法

<1>c语言介绍

1)程序设计语言的发展

机器语言——汇编语言——高级语言

      机器语言就是二进制代码;

      汇编语言就是把二进制代码变成英文字母;

      高级语言分为两类:结构化语言(比如说c语言)和面向对象语言(比如说c++)。

 

2)C语言的特点

优点:代码量小,速度快

      代码量小是说为了实现某功能而做出的文件比较小;

      速度快是因为,暂行的三大os是用c语言写的,而各种程序需要在os运行,想要程序快,所以os必须要快,os要快,所以C语言要快。

      三大os包括:Linux,windows,Unix。

缺点:危险性高,开发周期长,可移植性不强

      危险性高是因为c语言代码里的小错误不会被纠错;

      开发周期长是因为这是面向过程的语言,容易崩溃;

      可移植性不强是针对类似java这样的语言说的,就c写的程序,不同pc不一定可以跑起来,跑起来也不一定是同一个结果,而Java哪都能跑,且结果相同。

 

3)c语言的应用领域

可以用来进行软件开发,系统软件和应用软件都可以

系统软件有:os,驱动,数据库这类;

应用软件有:嵌入式软件开发(手机应用),办公软件开发(比如wps)等等

 

<2>一些预备知识

1)cpu,内存,硬盘,主板,显卡,显示器间的关系

程序被os从硬盘调度到内存中,由cpu执行,在显卡的作用下,在显示器上显示出画面。

主板是用来插硬件的,上面有一些电路,来负责各硬件之间的数据传输。

 

2)HelloWorld程序如何运行起来

敲出的代码经过编译,链接形成可执行的.exe文件,os调用该文件供cpu执行

 

3)os和内存在程序运行时发挥的作用

内存由os统一管理使用

运行前,程序要向os申请内存空间,如果内存空间足够,那么os会选取一块内存空间,将外存中的程序copy一份到这块内存上。在运行时,分配给这个程序的内存空间不会分配给其他程序。运行结束后,os会回收这块内存空间,但是不会删除这块内存上的数据(这就引入了变量为什么要初始化的问题)。

 

<3>变量

1)什么是变量

变量是一个字母,但是这个字母和内存中的一块空间对应,可以通过这个字母来使用内存中的一块空间。

 

2)变量是怎么申请的

比如 int i=3; 实际上是visual studio向os在内存申请了一块空间命名为i,并且把数字3存入这块空间。

 

3)变量为什么要初始化(赋值)

程序运行结束后,os回收内存空间,但是不会删除数据。所以等这块空间被再次分配的时候,上面会有之前程序残存的数据,会引起不必要的错误,所以要初始化。变量可以重复赋值,但是不能重复定义。

 

4)变量的数据类型

基本数据类型和复合数据类型

基本数据类型包括:

      整形(整数),浮点型(实数),字符(符号)

      整形有:int(4字节),short int(2字节),long int(8字节)

      浮点型有:float(4字节),double(8字节)

      字符:char(1字节);

      1个字节=8bit。

复合数据类型有:结构体,枚举,共用体。

 

<4>常量

1)常量的分类有:整数,浮点数,字符

整数有二、八、十、十六进制的区别;

浮点数有传统写法(比如1.123)和科学计数法(比如112.3e-2是1.123);

字符中单个字符用单引号(比如‘A’),字符串用双引号(比如“AB”)。但是注意,”A”也对,因为默认表示‘A’和‘\0’组合成的字符串而不是只有A

 

2)常量的二进制代码存储形式

整数是补码,实数是IEEE754,字符是ASCII对应的整数形式

 

3)关于进制

n进制就是逢n进1

C语言中,十进制直接表示,二、八、十六进制前面加0b,0,0x,注意是零;

汇编中,二、八、十、十六分别加B,O,D,H,注意是欧。

有个问题:为什么计算机用二进制代码呢? 因为二进制只有两种状态,用一个硬件表示两种状态很容易

 

4)关于ASCII

ASCII不是一个数,是一种规则。他规定,字符和整数有一定的对应关系(比如’A’对应65),然后字符按照整数的形式(二进制补码)存储在内存中。

 

<5>printf

1) 用法:printf(“输出控制符,非输出控制符”,输出参数)

比如:int i=5;printf(“i=%d”,i);得到的输出结果为i=5。i=就是非输出控制符,%d就是输出控制符,i就是输出参数,可以看出非输出控制符原样输出。

 

2)输出控制符的作用:因为对于pc来说,这个5不是五,它存在计算机里面的只是一串二进制代码,这个%d告诉pc用把这一串二进制代码解析成十进制形式来输出。

<6>scanf

1) 用法:scanf(“输入控制符,非输入控制符”,输入参数)

比如:int i;scanf(“i=%d”,&i);那么你想要i为五的话,键入的时候就必须键入i=5。其中i=是非输入控制符,%d是输入控制符,可以看出非输入控制符原样键入。

 

2)输入控制符的作用:因为对于pc来说,你键入的5,pc只当他是字符,而不是数字五,所以%d告诉pc把5当作十进制的数字五来解释成二进制代码,存入i的内存空间里。

 

3)关于&

这是一个取地址符号,&i相当于是i在内存里面的地址

 

4)关于输入/出控制符

%f(浮点数),%c(单个字符),%s(字符串),%o,%d,%x(八、十、十六进制,没二进制);

%x,%X,%#x,%#X,比如47以这四种形式输出:x:2f,  X:2F,  #x:0x2f,  #X:0X2F

 

5)干掉非法输入

while((ch=getchar())!=‘\n’)//ch=getchar是将键入字符获得字符赋给ch

     continue;

posted @ 2022-12-04 22:39  keyboardmancz  阅读(218)  评论(0)    收藏  举报