C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSIC,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
那计算机语言是什么呢?说白了就是人和计算机交流的语言,比如:C/C++/JAVA /Python。
计算机语言的发展早期的计算机能够识别的语言叫二进制语言,我们知道电脑属于硬件,是需要通电,而电有正电和负电之分,即分别用1和0来表达,所组成的二进制序列具有一定的意义,所以人们早期编程都是二进制,可见编程时非常复杂,那既然这样,能不能用几个字母来代替这些二进制呢?之后人们就用几个字母(助记符)来表示这些二级制,所以用助记符来表达的这些语言叫汇编语言。但后来发现汇编语言也还是太麻烦,随后就出现了B语言,B语言的基础上出现C语言,C语言的基础上发展程C++。到C/C++语言这儿就叫高级语言。
#include
//凡是C语言都有一个下面这样的框架
int main() //主函数-程序的入口,一个程序只能有且只有一个main函数
{
//这里完成任务
//在屏幕上输出hello world
//函数-print function -printf -打印函数,它是库函数,是c语言本身提供给我们使用的函数
//include 包含一个stdio.h的文件。std-标准(standard) i-input o-output
printf("hello world\n");
return 0; //表示返回值0
}
//int是整型的意思,main前面的int表示函数调用返回一个整型值
//int main()
//{
// return 0; //表示返回值0
//}
//void main() 属于过时的写法
char--------------------//字符数据类型
short-------------------//短整型
int-----------------------//整形
long--------------------//长整型
long long--------------//更长整形
float--------------------//单精度浮点数
double-----------------//双精度浮点数
#include
int main()
{
//%d-打印整型10进制数据
//%c-打印字符格式的数据
//%f-打印浮点型数字-打印小数
//%p-以地址的形式打印
//%x-打印16进制数字
//%o...
//char ch = 'A';//内存
//printf("%c\n",ch);//%c-打印字符格式的数据
//int age = 20;
//printf("%d\n", age);//%d-打印整型10进制数据
//long num = 100;
//printf("%d\n", num);
//float f = 5.0;
//printf("%f\n", f);
double d = 3.14;
printf("%lf\n", d);
return 0;
}
#include
int main()
{
//sizeof-表示xx的大小,此处用来查看各类型占用内存空间的大小
//表示char,xx,能够向内存申请空间的大小
printf("%d\n", sizeof(char));//输出是1字节
printf("%d\n", sizeof(short));//输出是2字节
printf("%d\n", sizeof(int));//输出是4字节
printf("%d\n", sizeof(long));//输出可以是4字节,可以是8字节
//因为同一个类型的有符号和无符号所占的内存相同
printf("%d\n", sizeof(long long));//输出是8字节
printf("%d\n", sizeof(float));//输出是4字节
printf("%d\n", sizeof(double));//输出是8字节
return 0;
}
数据类型 | 范围 |
---|---|
char | 0~2^8-1 |
short | 0~2^16-1 |
int | 0~2^32-1 |
long | 0~2^32-1 |
long long | 0~2^64-1 |
float | 0~2^32-1 |
double | 0~2^64-1 |
#include
int main()
{
short age = 20;//向内存申请2个字节=16bit位,用来存放20。
float weight = 95.5f;//单写95.5编译器会默认位double类型,发生精度丢失,从而报警,
//所以在后加f,就会使95.5变成单精度浮点型。
return 0;
}
补充:C语言标准规定:sizeof(long)>=sizeo(int) 的件就可以。
#include
int num1 = 20;//全局变量
int main()
{
int num2 = 10;//局部变量
return 0;
}
注意:
1)全局变量和局部变量的名字建议不要相同,相同容易误会而产生BUG。当全局变量和局部变量的名字相同时,局部变量优先级大于全局变量。
2)局部变量不能在它的范围外使用。如下代码,运行会报错。而全局变量在哪儿都可以使用。
#include
int main()
{
{
int a = 10;
}
printf("%d\n");//局部变量a不能在它的范围外使用。如下代码,运行会报错。
return 0;
}
#define _CRT_SECURE_NO_WARNINGS //解决C4996的错误
#pragma warning(disable:6031)
#include
int main()
{
//计算两数之和
int num1 = 0;//申请内存放数据
int num2 = 0;
int sum = 0;
//输入数据-使用输入函数scanf
scanf("%d%d",&num1,&num2);//&为取地址符号
//C语言语法规定,变量要定在当前代码块的最前
sum = num1 + num2;
printf("sum = %d", sum);
return 0;
}
注意:如果编译器报C6031和C4996,检查代码是否含有如下两行代码:
#define _CRT_SECURE_NO_WARNINGS //解决C4996的错误
#pragma warning(disable:6031)
#define _CRT_SECURE_NO_WARNINGS //解决C4996的错误
#include
//局部变量作用域:只能在当前大括号内使用。
int main()
{
{
int num = 0;
printf("num = %d\n", num);//num这里才能用,因为num定义在当前大括号内部,即看变量所在大括号。
}
printf("num = %d\n", num);//num这里不能用
return 0;
}
B、全局变量作用域:在整个工程任何地方可以使用,即整个工程。
#define _CRT_SECURE_NO_WARNINGS //解决C4996的错误
#include
//全局变量作用域
int global = 2021;
void test()
{
printf("test()-- %d\n", global);
}
int main()
{
//为声明的标识符xxx
//声明extern外部符号
//extern int xxx;
test();
printf("%d\n", global);
return 0;
}
补充:若要使用这个工程的另一个文件的全局变量,则需使用声明外部符号 extern int xxx; 。
C、局部变量生命周期:进入作用域生命周期开始,出作用域生命周期结束。
#define _CRT_SECURE_NO_WARNINGS //解决C4996的错误
#include
//局部变量生命周期
int main()
{
{
int a = 10;
printf("a = %d\n", a);//ok
}
printf("a = %d\n", a);//error
return 0;
}
D、全局变量生命周期:整个程序的生命周期。