C语言学习笔记-P1 初识C语言(1)

P1 初识C语言(1)

一、什么是C语言

1、定义

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。

2、发展

计算机语言的发展早期的计算机能够识别的语言叫二进制语言,我们知道电脑属于硬件,是需要通电,而电有正电和负电之分,即分别用1和0来表达,所组成的二进制序列具有一定的意义,所以人们早期编程都是二进制,可见编程时非常复杂,那既然这样,能不能用几个字母来代替这些二进制呢?之后人们就用几个字母(助记符)来表示这些二级制,所以用助记符来表达的这些语言叫汇编语言。但后来发现汇编语言也还是太麻烦,随后就出现了B语言,B语言的基础上出现C语言,C语言的基础上发展程C++。到C/C++语言这儿就叫高级语言。

二、第一个C语言程序

Hello World

#include<stdio.h>
//凡是C语言都有一个下面这样的框架
int main() //主函数-程序的入口,一个程序只能有且只有一个main函数
{
	//这里完成任务
	//在屏幕上输出hello world
	//函数-print function -printf -打印函数,它是库函数,是c语言本身提供给我们使用的函数
	//include<stdio.h>  包含一个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<stdio.h>

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;
}
  1. 为什么会出现这么多的类型?
    因为每一种数据类型对应所占用的内存的大小不同,就是为了咱们使用内存的合理性。比如:你要显示年龄20岁,却用int的话,空间就有点浪费了,这时候应该用short int。
  2. 每种类型的大小是多少?
#include<stdio.h>
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;
}
  1. 计算机里的计算单位。
    bit -比特位-计算机最小单位
    byte -字节
    kb
    Mb
    Gb

    除了 1byte=8bit 外,它们之间的进制都是1024,比如1Mb=1024Kb。bit是计算机最小的单位,它只能存1/0,所以一个bit用来存放一个二进制位。
  2. 各数据类型能表达的数字的范围。
数据类型范围
char0~2^8-1
short0~2^16-1
int0~2^32-1
long0~2^32-1
long long0~2^64-1
float0~2^32-1
double0~2^64-1

四、变量,常量

#include<stdio.h>
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) 的件就可以。

  1. 变量与常量。
    生活中不变的量,C语言中用常量来表示;
    生活中变化的量,C语言中用变量来表示。
  2. 定义变量的方法。
    公式:类型+变量名+值 例如:short age = 20;
  3. 变量的分类。
    定义:在代码块({})之外的变量称为全局变量,定义在代码块({})之内的变量称为局部变量。
#include<stdio.h>

int num1 = 20;//全局变量

int main()
{
	int num2 = 10;//局部变量
	return 0;
}

注意:
1)全局变量和局部变量的名字建议不要相同,相同容易误会而产生BUG。当全局变量和局部变量的名字相同时,局部变量优先级大于全局变量。
2)局部变量不能在它的范围外使用。如下代码,运行会报错。而全局变量在哪儿都可以使用。

#include<stdio.h>
int main()
{
	{
		int a = 10;
	}
	printf("%d\n");//局部变量a不能在它的范围外使用。如下代码,运行会报错。
	return 0;
}

  1. 变量的使用。
    例如: 两数之和。
#define  _CRT_SECURE_NO_WARNINGS  //解决C4996的错误
#pragma warning(disable:6031)
#include<stdio.h>

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)
  1. 变量的作用域和生命周期。
    1)作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
    通俗而言,就是这个变量哪里可用哪里不可用。
    例如:
    A、局部变量作用域:只能在当前大括号内使用,即所在的局部范围。
#define  _CRT_SECURE_NO_WARNINGS  //解决C4996的错误
#include<stdio.h>
//局部变量作用域:只能在当前大括号内使用。
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<stdio.h>

//全局变量作用域
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<stdio.h>
//局部变量生命周期
int main()
{
	
	{
		int a = 10;
		printf("a = %d\n", a);//ok
	}
	printf("a =  %d\n", a);//error
	return 0;
}

D、全局变量生命周期:整个程序的生命周期。

未完待续!!!

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小马快跑~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值