语言学习大全
C 语言的基础语法
第一部分 软件的安装
1.推荐使用 visual studio 编辑器
https://visualstudio.microsoft.com/zh-hans/
编辑器的下载网址
安装流程 和一般软件一样
我是百度看了别人的博客 建议性的安装
软件比较大 但是学习么 先学完再说
2.Vc6++
这个软件 很多大学都在用 可能你也用过
你说他能用么 能用 但是好用么 我觉得还可以在优化一下
而且这个软件几乎十几年的历史了
3.学校 自己教学用的软件
一般在大学 有的会 使用一些绿色的软件
后面会提示 是实验室使用
第二部分 入门hello world
内容
#include<stdio.h>
int main() {
printf("hello world");
return 0;
}
流程就是
- 打开visual studio 的编辑器
- 可能会让你登录 可以不登录 直接跳过
- 新建文件 ---->选择文件的存放位置
- 之后就会有个 介绍文件
- ctrl +a 回车 删除
- 写下上面文件的内容就行了
- 然后进行选择 最上面导航的 生成 (B) ----生成 解决方案
- 最上面导航的 调试 (D) ----开始执行(不调试)
第三部分 hello world-基本构成
#include<stdio.h>
//引入头文件 这里面放着printf的定义 如果你使用printf
//就需要使用这个头文件 提前声明printf 不然会报错
//定义函数add
int add(int a, int b)
{
return a + b;
}
//定义入口文件 main 唯一一个的main
int main()
{
printf("输出信息 hello world \n");
int result;
result = add(12, 11);
printf("result的和就是%d\n", result);
return 0;
}
基本理解 hello world 用到的构成内容
- 函数
- 主函数
- 变量
- 关键字
- 常量
- printf
- include
函数
函数就是一个功能 比如车 有行驶跑的功能
加油(输入) ====发动机(处理)=======产生热能推动轮子前进(输出)
函数就是如此
比如 计算一个相加的函数
(能量的类型) 功能名字 (输入 油)
{
发动机执行过程
return 输出移动轮子的能量
}
(输出值的类型) 函数名字 (参数类型 参数1,参数类型 参数2)
{
执行过程
return 输出值
}
int add (int a,int b)
{
return a+b
}
这就是一个函数是
主函数
上面我们已经自己定义好了一个 add函数 ,那我们需要怎样来使用它呢? add函数 能直接运行嘛? 答案是不行的。
所有的C语言代码都有一个起始入口,而这个入口就是 主函数main 。进入了主函数以后,才能经由主函 数来调用其他函数。 这也意味着,每个C语言代码,只能有且只有一个main函数。 我们把代码稍微修改,现在代码如下。
//例子
#include <stdio.h>
int add(int a, int b)
{
return a + b;
}
int main()
{
int result;
result = add(2, 3);
printf("%d", result);
return 0;
}
int main() // 这是主函数
{
return 0; // 主函数返回值
}
主函数是一个为mian 命名的函数
而且一个文件中只能存在 一个main文件
有时也成为了 入口文件
函数的执行 需要在main中调用
自然地,我们会想到,主函数是被谁调用的?主函数的返回值必须是 int 吗?
主函数在程序开始的时候被自动调用,不需要在程序内主动调用主函数。
而主函数的返回值会返回给调用这个程序的程序。
C语言标准中规定主函数有返回值且必须是 int 。如果程序正常结束,一般将返回值设置为0。
变量
变量就是一个容器 他可以接受相同类型的任意值
int bian
bian =12
bian =55
变量就是存放值的地方
但我们需要值的时候可以直接 去找bian 去那值存值
变量声明
变量的类型 变量名字
int result 一个存放整型结果的变量
容器类型 容器的名字
碗 大米 一个存放大米的碗 可以放黑米 白米 糯米....
赋值
就是给值的意思 常用于给变量存值
int result
result = 12
意思是吧12 存放到result中
下次可以直接从result获得12
常量
就是不变量的
例如 常见的 π 默认π=3.14
标识符
标识符 就是用来表示的一种符号
可用于变量 函数 实例的名字
比如 你的名字 用来表示你这个人的称呼
int result
其中 result 就是标识符
标识符的构造有一定的规则
1.标识符 有数字 字母 _ 构成
2.标识符 不能以数字开头 可以字母 _开头
12a 是不性的
a12 是可以的
字面量
字面量说白了就是一个值的意思
比如 12 就是字面意思12 “我爱你” 就是字面意思我爱你
关键词
系统为了运行 已经提前定义好的东西
例如 if else 你就不能在用了
printf函数
#include <stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
由单词 print(打印) 和单词 format(格式) 的首字母f组成,意为格式化打印。
可以输出一数据
printf("输出的内容");
peintf("%d",a); 按照格式化的输出 就是把%d 替换为a输出出去
#include命令
printf函数 并不是我们定义的函数,而是系统自带的函数。这个函数被写在文件 stdio.h 中,我们要使 用 printf 就必须先让编译器理解 printf 。 我们假定 printf 的函数定义写在文件 stdio.h 中,用 #include 命令,可以将文件 stdio.h 的代码复制 到我们的代码中。
第四部分 整数 数据类型
1.C语言中 整型的类型有
char short int long long long
char | short | int | long | long long | |
---|---|---|---|---|---|
字节 | 1 | 2 | 4 | 4 | 8 |
都是整数 问什么要分这么多类呢
算机通过晶体管的开关状态来记录数据。它们通常8个编为一组,我们称之为字节。而晶体管有开关
两种状态,一个字节有8个晶体管,因此一个字节可以拥有2的八次方个不同的状态。让每一种状态对应
一个数值,这样一个字节可以表示256个不同数值。
计算机存储资源是非常珍贵而
稀缺的。对存储资源,程序员可能恨不得把一块掰成两块来用。如果只想表达0到100以内的数值,那么
一个字节就足够了,何必用两个字节来存储
2.使用sizeof 获得字节大小
#include<stdio.h>
int main() {
char c = 4;
short s = 12123;
int i = 1212;
long l = 5555;
long long ll = 62;
printf("char的字节%d\n",sizeof(c)); //1
printf("short的字节%d\n", sizeof(s));//2
printf("int的字节%d\n", sizeof(i));//4
printf("long的字节%d\n", sizeof(l));//4
printf("long long的字节%d\n", sizeof(ll));//8
return 0;
}
int和long均占用4个字节。这并未违反C语言标准,C语言标准规
定高级别的类型取值范围不得小于低级别的类型,但是它们可以是一致的。
3.位 字节 范围
在很多语言中 其实就是计算中
位
使用二进制表示数据
100000000 ----这里面的每一个0或1 就是一个位 也称之为b 小b
字节
但是你可能听的很多的就是字节
字节其实就是8个 位组成的几个 数据段
10000000 ----这就是一个字节 一个字节=8位 1B=8b
范围
毕竟二进制 也是数值
一个 位 的范围就是 0-1 一个位只有两个状态 0 或1
那么一个字节 就是8个位二进制的数据
00010010 -----0->2^8 -1 0-255
为什么要减-1 因为 是从零开始的 012 就是三个 123 就是三个
那么 总共能放 256个 从0开始 到255 正好256 如果从1开始 到256正好256
无符号整形
int的范围 是四个字节 他的范围 4*8=32位 2^32次方个放数据的空间
但是int 是放不了的 因为 int 是会区分正负的
正负就需要一个位 那么就剩下31个位了
所以int 的范围 -2^31 --> +2^31-1
那么就有问题了 可不可以不要正负号 就是纯纯的正数 ?有的
那就是无符号整形
如果你确定你不会用到负数,那么请使用unsigned关键词。表明这个数据类型,是不带有符号位的。既 然不带有符号位了,那么原本留给符号位的那一个二进制位,可以用来表示数值
int a; 包含正负 -2^31 --> +2^31-1
unsigned int a ; 只有正数 0 --->2^32-1
第五部分 浮点(小数)类型
我们来讨论一下类似于1.234567,0.00001,这类非整数的数据。
浮点类型:float
#include <stdio.h>
int main()
{
float a = 1.234567;
float b = 0.00001;
float c = 365.12345;
printf("%f\n", a);
printf("%f\n", b);
printf("%f\n", c);
return 0;
}
标准规定,float类型必须至少能表示6位有效数字,并且取值范围至少是10^-37~10+37。
365.12345; 365.123可以精准 但是之后的比一定确认
浮点类型:double
#include <stdio.h>
int main()
{
double a = 1.234567;
double b = 0.00001;
double c = 365.12345;
printf("%f\n", a);
printf("%f\n", b);
printf("%f\n", c);
return 0;
}
次 365.12345 也是正确的了。
但是,请注意 double 类型也是有精度范围的。如果是更高精度的数据, double 也会出现误差。
我们日常的应用中,不会苛求一个精度完美的数值,是会允许存在一定误差范围的。但是,如果涉及高
精度领域的计算时,需要额外使用特殊的方法进行数值计算,以尽量减少误差。
字节大小
#include <stdio.h>
int main()
{
float a = 1.234567;
double b = 0.00001;
double c = 365.12345;
printf("%d\n", sizeof(a));//4
print