C语言之旅
本系列文章旨在让新手更好更快的入门,所以讲的有些浅
各路大佬若有更好的建议或者发现我哪里写的不妥,欢迎评论和指正
一、第一个c语言程序
c由函数组成的,用函数来实现具体功能。(前人栽树,后人乘凉。)
main ()
{
printf(“hello everyone! \n”);//打印出hello everyone!
// 说人话就是让系统复读我在括号里写的这句话,当然,printf也可以复读很多东西,告诉我们码农希望我们做什么或者计算机按照程序和我们输入scanf的数值算出来的一些答案
}
main是主函数的函数名,表示这是一个主函数(老大)
每一个C源程序都必须有,且只能有一个主函数main函数(老大只能有一个)
函数词用语句,printf函数的功能是把要输出的内容送到显示器去显示
printf函数是一个有系统定义的标准函数,可在程序中直接调用
支持环境–microsoft visual c++/dev 等(自行下载并尝试上文第一个程序)
编辑。编译,连接和执行
编辑:编辑是将源程序输入到计算,修改源程序,将修改好的源程序,保存到磁盘条件
A 新建程序
B 保存程序(后缀名加.c)
编译:将已编辑好的源程序翻译成二进制的目标代码
错误:一定要改 警告:最好修改
右边一个按钮 或 Ctrl + F7
注:对程序的任何修改都要重新保存和编译
.obj(目标文件)
(下边这一段我也看不太懂,感觉没什么意义,就是正常的编译和执行,意会即可)
连接:将各模块的二进制目标代码进行系统标准模块经连接处理后,得到具有绝对地址的可执行文件
执行:执行一个经过编译和连接的可执行的目标文件
对于考二级的同学:
※本章考点和重点:c的调试步骤(必会)
难点:V的使用和程序设计语言的发展(自己捋一捋时间线,也不会考的很难)
第二章 数据类型及其运算
我先找了一个思维导图,不是我写的,我看着也不太满意,有时间我再重写一个吧。不过建议有点小基础的同学还是自己写比较好,加深记忆。
数据类型思维导图
补:我新写的思维导图,网盘自取,下载后使用MindMaster打开
链接:https://pan.baidu.com/s/17Wt3eCXuCQf3O10gPkTGAQ
提取码:7slt
数据类型无非就是
标识符 常量 变量
然后运算涉及到一个单精度双精度等问题。
一、标识符
一,定义:在c语言中,有许多符号命名都必须遵守一定的规则,将此规则命名的符号成为标识符
命名规则:
由字母,数字,下划线组成,且由字母或下划线开头
注意:C语言中大小写区分
(注意打代码时英文字母的大小写和输入法的中英文符号,不必多说,这是新手易犯的低级错误。报错的时候先确定有没有这些低级错误的存在)
二,分类
1.关键字:系统预先定义—不能做其他使用
掌握:关键字的含义
Eg: int float double char if else for do等
上文八个标识符理解: 整型 浮点数 双精度 字符变量 条件语句(如果) 否则 循环 循环体
1.关于int
1)整型即整数,不能存在小数点
2)多种类型
早期的操作系统是16位系统,
int用二字节表示,范围是-215 ~ 215-1
long用4字节表示,范围是-231~231-1。(很明显long更牛逼)
但后来发展到32位操作系统,
int 可以用4字节表示了,与long相同。
目前的操作系统已发展到64位操作系统,但因程序编译工艺的不同,两者表现出不同的差别:
32位编译系统:int占四字节,与long相同。
64位编译系统:int占四字节,long占8字节,long数据范围变为:-263~263-1(long还是更牛)
具体移步关于int、short int、long int、long long 的区别
short int类型(简写为short):占用空间可能比int少,常用于较小数值以节省空间。
long int类型(简写为long):占用空间可能比int多,常用于较大数值。
long long int类型(简写为long long):占用空间可能比long多,常用于更大数值的场合。
unsigned int(简写为unsigned):只用于非负值的场合。 在C90标准中,添加了unsigned long int(简写为unsigned long)和unsigned short int(简写为unsigned short)
在C99标准中,又添加了unsigned long long int(简写为unsigned long long)
2.关于float(单精度浮点数)和double(双精度浮点数)
浮点数其实就是二进制的科学计数法,每个浮点数都分成三部分——分数部分(Fraction),指数部分(Exp)和符号位(S)。
单精是single float,双精是double float。
float就是浮点数(也就是小数)
1、所占的内存不同
单精度浮点du数占用4个字节(32位)存储空间存储一个浮点数,包括符号位1位,阶码8位,尾数23位
而双精度浮点数使用 8个字节(64位)存储空间存储一个浮点数,包括符号位1位,阶码11位,尾数52位。
那么精度顾名思义,就是确定一个数的准确度。
单精度浮点数的数值范围为-3.4E38~3.4E38,而双精度浮点数可以表示的数字的绝对值范围大约是:-2.23E308 ~
1.79E308。E表示10的多少次方,如3.4E38指的是3.4乘以10的38次方。
可见,双精度更精准地表达到小数点后两位,但数值范围相比单精度小了些。两者各有所长。
除此之外还有:
长双精度(long double型) 16个字节,有效数位为18位
long double 至少要和 double 一样精确
实型变量的定义的一般形式为
类型说明符 变量名说明符,变量名标识符,……;
Eg: float x,y;
Double p,q;
3.关于char
字符型 char 1个字节
- 字符变量的定义的一般形式为
- 类型说明符 变量名标识符 ,变量名标识符,……;
eg:char c=’a’;
int a=10;
c+a=97+10=107
注意:当把字符放入字符变量中时,字符变量中的值就是该字符的ASCII代码值,字符变量可以作为整型变量来处理,也可以参与整型变量的任何运算
if else for do 涉及后续的语句结构,将在不久后的文章一同介绍
二.预定的标识符:系统预先定义–没毛病的话别自己乱定义
掌握:预定义的含义
Eg:printf puts scanf gets putchar getchar等
上文5个标识符暂时理解为:打印 打印 输入 输入 输出字符 读取字符
scanf不能接受空格、制表符Tab、回车等;
而gets能够接受空格、制表符Tab和回车等;
(就是说在执行文件后的窗口控制台–小黑框 时,get是可以让我们输入上述键格的,而scanf不能,除此之外两者写法不同。别急,见下文)
再具体一点移步scnaf()和gets()用法和区别
printf和puts:
puts()在输出字符串时会将’\0’自动转换成’\n’进行输出,也就是说,puts方法输出完字符串后会自动换行。(没什么大区别)
关于读取和输出字符,我个人认为不是难点
浅谈putchar和getchar
putchar与getchar详解
3.自定义标识符:用户自己定义,必须要遵循规则
符号常量,变量,函数名,数组,指针,结构等,一般由字母组成
欲知后事如何,请看下一集
C语言之旅(二)转义字符的含义与自定义标识符