C语言基本介绍

C语言简介:

时间:1970~1973 作者:丹尼斯.里奇 肯.汤普逊 地点:贝尔实验室

目的:编写操作系统 UNIX->Linux BCPL->newB->C

特点:速度快,语法简洁(32个关键字),功能强大(对硬件支持)。

缺点:可用的库少,由于语法简洁导致代码不易阅读。

第一C程序:

程序员所编写代码不是标准C代码,不能直接编译,它一段把它翻译成标准的C代码,
负责翻译的程序叫预处理器,翻译的过程叫预处理,被翻译的代码叫预处理指令
(以#开头)。

#include 导入一个头文件到源文件。

.h 结尾的文件叫头文件,里面记录的大多数都是函数的开头(函数声明);
.c 结尾的文件叫源文件,里面记录的具体功能实现代码。
<> 从系统指定的目录加载头文件
"" 先从当前目录下加载头文件,如果找不到再从系统指定目录加载头文件。
系统通过环境变量来指定加载头文件的目录。

stdio.h standard in out 记录的是与标准输入输出有关的辅助代码。

#include <stdio.h>

C语言以函数为管理代码的最小单位,一个函数就是一段具有某项功能的代码。
main函数是程序的默认入口(可以修改,但需要手动编程链接脚本),有且只能有一个。
int是一种数据类型,放在函数名前表示函数的返回值是int类型,函数的返回值是就函数执行的结果,会交给函数的调用者。
main的调用者就是操作系统,因此main的返回值就交给的操作系统,被记录在了系统日志中。

main函数的返回值代表程序是以什么状态结束的:
正数:表示程序出现异常
负数:表示程序出现错误
0:表示一切正常

在C语言中大括号用来划分区地盘,被大括号包含的代码表示属于一个整体。

int main()
{
标准库是C语言标准委员为C语言提供一些基础功能(以函数形式提供的),
封装在libc库中。printf/scanf是标准库中的函数,用来输入输出数据,
一般用它来调试程序,项目在真正运行则	不使用。
"字符串字面值,可以直接被printf输出"
\n是一种转义字符,不能直接被表示的符号:
	\r 回到行首
	\b 退格
	\t 制表符,相当于按一下tab键
	\a 铃响
	%% 表示一个%
	\\ 表示一个\
C语言中以分号表示代码的结束,当代码太长时可以直接换行。
return:
	1、可以立即结束函数的执行,即使下面还有代码。
	2、把一个数据返回给函数的调用者。

printf("hello world!\n");
	return -1;
}

C代码是如何变量成可执行程序的:

1、预处理	:gcc -E code.c 会把预处理的结束显示在屏幕上。
	gcc -E code.c -o code.i 把预处理的结果保存在文件中。
2、汇编:gcc -s code.i 把标准的C代码翻译成汇编代码
	会生成一个以.s结尾的汇编文件。
3、编译:gcc -c code.s 把汇编代码翻译成纯二进制代码
	会生成一个以.o结尾的目标文件,已经可以被执行,只是没有入口
4、链接:gcc code1.o code2.o ... 把若干个.o文件合并成一个可以执行的文件。

C语言的数据类型:
编程语言为什么要把数据进行分类?

		结构存储空间、提高运算速度。

整型:

	signed 有符号整型,存储数据的二进制位的最高位用来表示正负,
	最高位也叫符号位,signed不加就代表加。
		char 		1	-128~127		
		short		2	-32768~32767 	(2^15)
		int			4	-2000000000~2000000000
		long		4/8
		long long	8
		
	unsigned 无符号整型,所有的二进制位都用来代表数据,只能表示正数,
	unsigned必须要加。
		char 			0~255
		short			0~65535     	(2^16)
		int				0~4000000000
		long
		long long

浮点型:

	单精度:float		4
	双精度:double		8
	高精度:long double	12/16
	浮点型采用科学计数法来表示数据:符号位+指数位+尾数位。
	浮点型小数后六位有效,数据默认只显示小数点六位。
char 字符就是符号或图案,在计算机以整数存储,当需要以字符形式显示时,
计算机会根据ASCII表中的对应关系显示出相应的符号。
		48 '0'
	65 'A'
	97 'a'
	0  '\0'
bool 在计算机界1980年以后才开始流行,因此C语言中不可能有真正的布尔类型,
如果想使用需要包含stdbool.h头文件。
true=1 false=0

变量:

程序运行过程中可以修改的量,可以用来存放数据。
定义:数据类型 变量名;
	1、由变量的功能确定变量的取值范围,根据变量的取值范围确定变量的类型。
	2、变量的默认值不确定,为了安全建议给一个初始值。
	3、变量的取名要符合规定、标准:
		1、由数字、字母、下划线组。
		2、不能以数字开头。
		3、不能与关键字重名。
		-------------
		4、尽量不要超过30个字符
		5、见名知意 变量名(使用范围,功能,类型)
使用:赋值、参数运算
变量的输出:printf 类型 变量名
	C语言中使用占位符的方式来告知变量的类型。
	signed:char,short,int,long,long long
		   %hhd,%hd,%d,%ld,%lld
	unsigned:char,short,int,long,long long
		   %hhu,%hu,%u,%lu,%llu
	浮点型:float,double,long double
		   %f,%lf,%LF
	字符型:char %c
变量的输入:scanf 类型 变量地址=&变量名
	注意:不带\n

常量:

程序运算不能改变的量。
字面值:
	1000 表示的是 int
	1000u 表示的是 unsigned int
	1000lu 表示的是 unsigned long
	1000llu 表示的是 unsigned long
	3.14 表示的是 double
	3.14f 表示的是 float
	"hehe" 表示的是 const char*
受保护的变量:
	const int num;

枚举值
宏常量

运算符:

算术运算符:+ - * / %
	/ % 除数不能为零,会出现"浮点数例外,(核心已转储)",导致程序死亡。
关系运算符:> < >= <= == !=
	3 < num < 9 <=> 3 < num && num < 9;
	注意:C语言中的运算规则与数学中的不同。
	== 变量尽量放在右边,常量放在左边。
		100 = num; 会有错误提示
		num = 100; 变成了赋值语句


自变运算符:++/--
	不要一个表达式中过多使用,不同的编译器对自变运算符的处理顺序不一样。
逻辑运算符:&& || !
	&&、||具有短路特性,当运算左边的值已经可以确定表达式结果时,右边的不再计算
	,适当的利用短路特性可以写精简的分支结构。
	if(num < 100)
	{
		num++;
	}
	num < 100 && num++;

单目运算符,运算优先级别比&&、||高。
赋值运算符及扩展:+= -= *= /= ...
	num *= 10+n;
	num = num * (10+n);

三目运算符:[1]?[2]:[3];
	注意:不能使用流程控制语句,
	因为三目运算符始终是一个表达式必须要有一个结果。


字节宽度运算符:sizeof
	sizeof不是函数,而是计算数据类型所点字节数的关键字。
	sizeof不计算小括号中的表达式,它只是推算表达式结果的类型然后计算
	这个类型所占的字节数。
位运算符:& | ~ ^ >> << 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值