C语言编程预备知识
前言
在学习C语言之前,我们要理解一些预备知识,学习这些预备知识之后,更加便于我们之后C语言的学习,这些知识主要通过下面的问题来表述。
问题
1. CPU 内存条 硬盘 显卡 主板 显示器 之间有什么关系?
答:
- 操作系统将硬盘中的数据调入内存条,CPU处理内存条中的数据,把一些数据变成图像(声音),然后通过显卡(声卡)在显示器(播放器上输出)。
- 主板是连接这些设备,为其他硬件提供传输信息的条件的设备。
2. HelloWorld程序是如何运行起来的?
答:
- 点击编译,链接后生成一个.exe的可执行文件。
- 点击运行后,编译软件请求操作系统执行.exe程序。
3. 什么是数据类型?
答:
类型 | 存储大小 | 值范围 |
---|---|---|
char | 1字节 | -128到127或0到255 |
int | 4字节(也有2字节 | -32,768到32,767或-2,147,483,648到2,147,483,647 |
short | 2字节 | -32,768到32767 |
long | 4字节 | -2,147,483,648到2,147,483,647 |
float | 4字节 | 1.2E-38到3.4E+38(精度为6位小数) |
double | 16字节 | 3.4E-4932到1.1E+4932(精度为19位小数) |
- 数据要保存到计算机里,数据要存储就需要分类。
- 数学中也有对数据的分类,例如,整数,分数,实数,虚数等。
- C语言中的数据类型可以分为基本类型数据和复合类型数据(结构体,枚举,共用体)
- 结构体:结构体是由一批数据组合而成的一种新的数据类型。组成结构型数据的每个数据称为结构型数据的“成员”。
- 枚举:一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数,比如一周共有周一,周二,…,周日。
注: 共用体已经被淘汰,知道其的存在即可。结构体和枚举在后面会详细介绍。
4. 什么是变量?
答:
- 变量是指在程序运行时其值可以改变的量,变量的功能就是存储数据。
- 每个变量都有特定的类bai型。
- 变量的值存放在内存中,程序终止之后所占的空间被释放掉。
- 变量的本质就是内存中一段存储空间。
5. CPU 内存条 VC++6.0 操作系统之间有什么关系?
答:
编译软件发出请求,请求操作系统控制CPU在内存条上为程序分配空间,由CPU处理程序的数据。
6. 变量为什么必须初始化?
答:
- 所谓初始化就是在创建变量的时候给变量赋初值的意思。
- C语言的变量在定义后,如果没有赋chuzhi初值系统会默认赋一个非常变态的初值。
- 在老版本的windows系统是没有默认赋初值的。
- 我们要清楚,计算机在最底层是01这样的代码来体现的,而01其实就是机器中的断电和通电状态。
- 每当变量被释放后,内存空间的通电状态不会改变,所以当新创建的变量说申请的空间是之前空间释放的空间,所以变量在被创建后如果没有赋初值,可能会是之前销毁的变量值。
- 系统引入一个变态的值来对没有手动赋初值的变量赋值,这样更容易发现错误的所在,如果不这样更多的人会认为是代码的逻辑错误,而不是因为没有赋初值造成的。
7. 如何定义变量?
答:
- 变量定义方式(遵循先定义后使用规则)
- a) 数据类型 变量名=值;
- b) 数据类型 变量名; 变量名=值;
- 变量名的规定(一定要遵守)
- a) 变量名的开头必须是字母或下划线,不能是数字。实际编程中最常用的是以字母开头,而以下划线开头的变量名是系统专用的。
- b) 变量名中的字母是区分大小写的。比如 a 和 A 是不同的变量名,num 和 Num 也是不同的变量名。
- c) 变量名绝对不可以是C语言关键字,这一点一定要记住!
- d) 变量名中不能有空格。这个可以这样理解:因为上面我们说过,变量名是字母、数字、下划线的组合,没有空格这一项。
- 变量名的规范(建议遵守)
- a) 变量名尽量有实际意义,可由单词去掉元音字母组成。尽量不要用单个字母。
- b) 如果一个变量名单词较多尽量用驼峰式的命名方式。
8. 什么是进制?
答:
进制就是逢几进几,如果想详细了解的话,请自行百度(这是一个了解进制的连接),在C语言中常见的进制有一下几种:
- 二进制: 1100B:以B结尾,每一位都是0或1的数就是二进制数。
- 二进制有原码,反码,补码三种表示方式,详细了解请点击链接 。
- 八进制: 1357O:以O结尾,每一位都是由0到7之间的数组成,这就是八进制数。
- 十进制: 2049D:以D结尾,每一位都是由0到9之间的数组成,这就是十进制数。
- 十六进制: 3FB9H:以H结尾,每一位都是有0到F之间的数组成,这就是十六进制数。
9. 常量在C语言中是如何表示的?
答:
- 十进制正常写
- 十六进制前面加0x或0X
- 八进制前面加数字0
- 科学计数法:3.14e3=3140,另一个1.14e-2=0.014
- 字符用单引号括起来
- 字符串用双引号括起来
10. 常量以什么样的二进制代码存储在计算机中?
答:
- 整数是以补码的形式转化为二进制代码存储在计算机中的,实数是以IEEE754标准转化为二进制代码存储在计算机中的
- 字符的形式实际上也是与整数存储方式相同(ascii码)。
11. 编写代码如何做到规范化?
答:
- 编写代码时一定要养成好习惯。
- 格式写的很规范,便于观看,也不容易出错。
- 学会写注释,方便对代码的理解。
- 缩进可以看出来那些代码段是内部代码。
- 鸡兔同笼代码示例。
#include<stdio.h>
int main()
{
int hd = 0;//头的个数
int ft = 0;//脚的个数
int chic = 0;//鸡的数量
int rab = 0;//兔子的数量
scanf("%d", &hd);
scanf("%d", ft);
//判断输入的值是否大于零
if(hd < 0||ft < 0)
{
printf("不符合实际条件!");
return 0;
}
//计算鸡兔的数量
rab = (ft - hd * 2) / 2;
chic = hd - rab;
//判断鸡兔的数量是否大于零
if(rab < 0||chic < 0)
{
printf("不符合实际条件!");
return 0;
}
printf("鸡有%d只,兔有%d只",chic,rab);
return 0;
}
12. 什么是字节?
答:
字节就是存储数据的单位,并且是硬件所能访问的最小单位。1字节=8位,1K=1024字节,1M=1024k,1G=1024M。
13. 不同类型数据之间相互赋值的问题。
答:
- 整数给整数赋值
- **相同类型之间赋值:**在计算机中的存储内容不变,只是数据按照不同的编码格式来解析。
- **长给短赋值:**截取低位,然后按照短整数的数据类型解析。
- 短给长赋值:
- 两个数据都是无符号的数据,短整数直接高位补0。
- 两个数据都是有符号的数据,短整数进行符号位扩展。
- 两个数一个是有符号数,一个数是无符号数,那么先将短整数进行位数扩展,过程中保持数值不变,然后按照长整数的数据类型解析数据。
- 整数与浮点之间:
- **浮点数转整数:**截取整数部分。
- **整数转浮点数:**小数部分为0,整数部分的值与其整数的值相等。
- float 与 double 之间: double 转 float 将会丢失精度。float 转 double 值不变。
- char和数字之间: 字符类型赋值给数字类型变量,可以理解成先转变成其的ascii码值的整形,然后在转换成具体的数据类型,而数字赋值给字符类型同样可以理解成先转化为整形,在根据ascii码转化成字符型。
13. 字符在本质上与数字的存储相同。
答:
字符在内存中是以不同编码标准转化为数字的形式存储的,所以字符在本质上与数字的存储形式相同。
注: 感谢上面链接用到的文章,如有冒犯请联系删除,谢谢! 最后送大家一句话:你可以copy我的代码,但不能copy我的激情。