C语言学习笔记01-C语言编程预备知识

前言

在学习C语言之前,我们要理解一些预备知识,学习这些预备知识之后,更加便于我们之后C语言的学习,这些知识主要通过下面的问题来表述。

问题

1. CPU 内存条 硬盘 显卡 主板 显示器 之间有什么关系?

答:

  • 操作系统将硬盘中的数据调入内存条,CPU处理内存条中的数据,把一些数据变成图像(声音),然后通过显卡(声卡)在显示器(播放器上输出)。
  • 主板是连接这些设备,为其他硬件提供传输信息的条件的设备。

2. HelloWorld程序是如何运行起来的?

答:

  • 点击编译,链接后生成一个.exe的可执行文件。
  • 点击运行后,编译软件请求操作系统执行.exe程序。

3. 什么是数据类型?

答:

类型存储大小值范围
char1字节-128到127或0到255
int4字节(也有2字节-32,768到32,767或-2,147,483,648到2,147,483,647
short2字节-32,768到32767
long4字节-2,147,483,648到2,147,483,647
float4字节1.2E-38到3.4E+38(精度为6位小数)
double16字节3.4E-4932到1.1E+4932(精度为19位小数)
  • 数据要保存到计算机里,数据要存储就需要分类。
  • 数学中也有对数据的分类,例如,整数,分数,实数,虚数等。
  • C语言中的数据类型可以分为基本类型数据和复合类型数据(结构体,枚举,共用体)
    • 结构体:结构体是由一批数据组合而成的一种新的数据类型。组成结构型数据的每个数据称为结构型数据的“成员”。
    • 枚举:一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数,比如一周共有周一,周二,…,周日。

注: 共用体已经被淘汰,知道其的存在即可。结构体和枚举在后面会详细介绍。

4. 什么是变量?

答:

  • 变量是指在程序运行时其值可以改变的量,变量的功能就是存储数据。
  • 每个变量都有特定的类bai型。
  • 变量的值存放在内存中,程序终止之后所占的空间被释放掉。
  • 变量的本质就是内存中一段存储空间。

5. CPU 内存条 VC++6.0 操作系统之间有什么关系?

答:
编译软件发出请求,请求操作系统控制CPU在内存条上为程序分配空间,由CPU处理程序的数据。

6. 变量为什么必须初始化?

答:

  1. 所谓初始化就是在创建变量的时候给变量赋初值的意思。
  2. C语言的变量在定义后,如果没有赋chuzhi初值系统会默认赋一个非常变态的初值。
  3. 在老版本的windows系统是没有默认赋初值的。
  4. 我们要清楚,计算机在最底层是01这样的代码来体现的,而01其实就是机器中的断电和通电状态。
  5. 每当变量被释放后,内存空间的通电状态不会改变,所以当新创建的变量说申请的空间是之前空间释放的空间,所以变量在被创建后如果没有赋初值,可能会是之前销毁的变量值。
  6. 系统引入一个变态的值来对没有手动赋初值的变量赋值,这样更容易发现错误的所在,如果不这样更多的人会认为是代码的逻辑错误,而不是因为没有赋初值造成的。

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我的激情。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值