什么是C语言?
C语言是一门通用的计算机编程语言,广泛应用于底层开发.
C语言的设计目标是提供一种能以建议的方式编译,处理低级存储器,减少少量机器码,以及不需要任何环境支持便能运行的编程语言.
尽管C语言提供了许多低级处理的功能,但依然保持着良好的跨平台的特性,以一个标准规格写出的C语言程序员可在许多电脑平台进行编译,甚至包括一些嵌入式处理器(单片机或称MCU)以及超级电脑等工作平台.
二十世纪八十年代,为了避免各开发平台产商用的C语言语法产生差异,由美国国家标准局为C语言制定了一整套完整的美国国家标准法,称为ANSI C,作为C语言最初的标准.
2011年12月8日,_国际标准化组织(ISO)_和_国际电工委员会(IEC)_发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉子函数名和汉字标识符,一定程度上实现了汉字编程.
C语言是一门面向过程的计算机编程语言,与C++,Java等面对对象的编程语言有所不同.
其编译器主要有Clang/GCC/WIN-TC/SUBLIME/MSVC/Turbo C等.
第一个C语言程序
本人采用的IDE为VS2017
1.进入VS,点击左上角 文件 -> 新建 -> 项目,选择空工程,创建;
2.在解决方案中找到 源文件,右键点击 添加->新建项,选择C++文件,名称改为test.c
(.c为C语言格式后缀/.cpp为C++格式后缀)
(因为C++对C语言有很好的兼容性,所以选择C++文件)
3.这样,集成开发环境就初始化完成了,可以开始代码编写.
#include<stdio.h>
int main(){
printf("hello,world!\n");
return 0;
}
- #include<stdio.h> 为一句预处理指令,指的是包含一个头文件.这个文件是C语言标准库中的文件(标准输入输出standard input/output).
- int main() 为主函数,也是程序的入口.其中的内容为函数体.
- printf为输出语句,表示打印其中的内容,双引号" "中包含的就是打印的内容,其中\n为换行操作符
运行结果将会一瞬而逝,所以为了更好地观察程序运行结果,引入一句system(“pause”);语句,使用system需要包含一个头文件stdlib.h
#include<stdio.h>
#include <stdlib.h>
int main(){
printf("hello,world!\n");
system("pause");
return 0;
}
这时候就可以观察到我们想要得到的结果了:
hello,world!
数据类型
有什么意义呢?通俗来说就是存放变量,因为变量有大小,所以从内存开辟的存储空间就不尽相同,以下罗列一下通常使用的几种:
- char //字符数据类型
- short //短整型
- int //整型
- long //长整型
- long long //更长的整型
- float //单精度浮点型
- double //双精度浮点型
数据在内存的存储形式为二进制,不同的数据类型所占内存大小不同,那么是如何"测量"出来的呢?
通过sizeof方法返回变量占用的内存空间.
#include <stdio.h>
int main(){
printf("%d\n",sizeof(char));
printf("%d\n",sizeof(short));
printf("%d\n",sizeof(int));
printf("%d\n",sizeof(long));
printf("%d\n",sizeof(long long));
printf("%d\n",sizeof(float));
printf("%d\n",sizeof(double));
system("pause");
return 0;
}
这样就可以求出每种类型所占内存大小了.
- char 占1字节;
- short 占2字节;
- int 占4字节;
- long 占4字节;
- long long 占8字节;
- float 占4字节;
- double 占8字节;
举例分析:
int 占4个字节,一个字节占8个二进制位,也就是共占32个二进制位,如果是无符号就可以表示的数据范围就是0~232-1,其大小大约42亿9千万.
这种演化方法其他数据类型也适用:
数据类型 | 带符号 |
---|---|
char | -128~127 |
short | -32768~32767 |
int | -21亿~21亿 |
数据类型 | 无符号 |
---|---|
char | 0~255 |
short | 0~65535 |
int | 0~42亿9千万 |
以上数字表示每个类型可以表示的数字范围,其中的符号表示 负号.
所以用户输入的信息就需要确认使用的数据类型可以存放得下,否则就会溢出.
同时需要确认输入数据和数据类型相匹配!
变量和常量
生活中的有些值是不变的:比如圆周率,性别,身份证号码,血型等.
有些值是可变的:比如年龄,体重,时间等.
变量
变量的分类
1.局部变量
2.全局变量
#include<stdio.h>
#include <stdlib.h>
int global = 2019;//全局变量
int main(){
int local = 2018;//局部变量
int global = 2020;
printf("global = %d\n",blobal);
printf("local = %d\n",local);
system("pause");
return 0;
}
输出结果为:
global = 2020
local = 2018;
所以,当局部变量和全局变量重名的时候,局部变量优先使用
变量的作用域与生命周期
作用域
一段代码中所用到的名字并不总是有效的,可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域.
1.局部变量的作用域是变量所在的局部范围,也就是当前大括号.
2.全局变量的作用域是整个工程.
生命周期
变量的创建到变量的销毁之间的一个时间段.
1.局部变量的生命周期是:进入作用域 生命周期开始,出作用域生命周期结束.
2.全局变量的生命周期是:整个程序的生命周期.
常量
常量的分类
1.字面常量
3.14f;
10000;
2.const修饰的常变量
(const修饰后变量的值不可以再更改)
const float pai = 3.14;
3.#define定义的标识符常量
(#define这个宏定义知识单纯的文本替换)
#define max 1000
4.枚举常量
(枚举常量默认从0开始赋值,也相当于给每个元素进行排序,是快速定义连续常量的一种方式)
enum Sex{
MALE,
FEMALE,
SECRET,
};