一、程序指令基概念

1.什么是程序?所谓程序就是一组计算机能识别和执行的指令。

2.什么是指令?指令是可以被计算机理解并执行的基本操作指令。

指令构成程序,程序构成软件。

二、计算机语言

1.计算机语言分为:机器语言,汇编语言,高级语言。

机器语言是指能被计算机直接识别和接受的机器指令。

汇编语言是指以符号语言的指令构成,再转换为机器指令。

高就语言是指在经过“翻译”,用编译程序把高级语言写的程序(源程序)转换为机器指令的程序(目标程序)。

高级语言的发展阶段:非结构化的语言,结构化语言。面向对象语言。

三、C语言的发展

1972年美国贝尔实验室D.M.Ritchie在B语言的基础上设计出了C语言。

四、C语言的基础应用

我的第一个C程序:

 #include<stdio.h>
//include(包含),包含一个叫做stdio.h的文件
//std 是标准 standard
// i 是input o是output
int main()//main 主程序 是程序的入口-一个程序中main中有且只有一个
{
//printf 函数 打印函数
//printf 库函数 是C语言本身提供给我们的使用的函数
printf("欢迎来到C的世界\n");
return 0;
}

/*int 是整型的意思
//main 前面的int表示main函数调用返回一个整型
int main()
{
return 0;//返回值
}*/

结论:之前学习C语言对于C语言所包含的头文件,我都只是一知半解,如今深入了解之后,更觉得其中意味颇多。

对于打印字符:

//%d打印整数
//%c打印字符
//%f打浮点数
//%p以地址形式打印
//%x打印16进制

数据类型

C语言中的数据类型林林种种,对于我目前常时用到的是: 

//char字符型
//short int 短整型
//int 整型
//long 长整型
/*
# include <stdio.h>
int main()
{
//char ch = 'A';//向cpu申请一块内存
//printf("%c\n",ch);//%c 打印字符格式的数据

long num = 100;
int age = 20;
float f = 5.3;

printf("%d,%d,%f\n",num,age,f);
return 0;
/*
double PAI = 3.14;
printf("%lf\n", PAI);//%lf打印双精度浮点数
return 0;
*/
}*/

 结论:对于不同的数据类型,有着不同的打印字符,比如说,整型为:%d,字符型为:%c。

至于为什么会选择不同的数据类型来写程序呢,我发现,每一个类型所占空间大小不一致

#include<stdio.h>
int main()
{
printf("%d\n",sizeof(char));//所占内存空间为1字节
printf("%d\n",sizeof(short int));//所占内存空间为2字节
printf("%d\n", sizeof(int));//所占内存空间为4字节
printf("%d\n",sizeof(long));//所占内存空间为4字节
printf("%d\n", sizeof(long long));//所占内存空间为8字节
printf("%d\n",sizeof(float));//所占内存空间为4字节
printf("%d\n",sizeof(double));//所占内存空间为8字节

//short int age = 20;//向内存申请两个字节=16bit位,用来存放20
//float weight = 95.6f;//向内存申请四个字节,存放小数
//return 0;

结论:将程序运行结果之后,打印出以下数字:1 2 4 4 8 4 8,他们代表着在使用该数据类型的时候,向CPU申请的内存空间大小。ps:long所占字节数的是4或8,原因是因为C语言标准层面来说,没有明确定义。只能确定sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)。在Linux64系统上运行的时候,long所占字节数为8字节。

至于数据类型的有无符号我想后续在后续的学习中慢慢研究。

在了解完基本的数据类型之后,我开始了常量和变量的学习

//常量 
//常量分为整型常量和浮点型常量
//比如:10为整型常量,10.0为浮点型常量

//变量
//变量分为局部变量和全局变量
include<stdio.h>
//int num = 20;//全局变量-定义在({})之外的变量
int main()
{
//局部变量和全局变量的名字建议不要相同,容易产生bug
//局部变量的作用域是变量所在的局部范围
//全局变量的作用域是整个工程
//当全局变量和局部变量名字相同时,输出以局部变量优先
//int num = 10;//局部变量-定义在代码块({})内部的变量
//printf("%d\n", num);
return 0;

在上述代码中,代码块概念为:{}之间的代码为一个代码块。当一个变量定义在代码块{}外是,他相对这个{}代码块,就是这个代码块{}的全局变量。

计算两个整数的和:
 #include<stdio.h>
int main()
{
int a = 10;
int b = 20;
int sum;
sum = a + b;
printf("%d\n",sum);
return 0;

}
输入两个整数并求和:
#include<stdio.h>
int main()
{
int num1 = 0;
int num2 = 0;
//scanf-输入函数
//&-取地址符
int sum=0;
scanf_s("%d%d",&num1,&num2);//scanf_s
sum = num1+num2;
printf("和为:%d\n",sum);
return 0;

上述代码中,scanf_s就是scanf,但因为scanf在c语言的规定中不是一个安全的函数,由于我使用的编译器为VS2019,而在VS2019中scanf不安全,更改为scanf_s。虽然警告消除,但是也降低了我代码的可移植性。