1. 初识C语言
C语言编程是一门面向过程的高级编程语言,虽然如今有很多高级语言,诸如Java,C++,以及近几年来大火的Python等,但是C语言作为较接近底层开发,高效灵活的语言,受众较广,使用场景较多,锻炼逻辑思维,作为入门编程的基本开发语言。
2. 基础知识准备
2.1计算机存储单位
位(bit):二进制数中的一个数位,可以是0或者1,是计算机中数据的最小单位。
字节(Byte,B):计算机中数据的基本单位,每8位组成一个字节。各种信息在计算机中存储、处理至少需要一个字节。例如,一个ASCII码。1用一个字节表示,一个汉字用两个字节表示。
国际上普遍采用ASCII编码作为通用的字符编码。
字(Word):两个字节称为一个字。汉字的存储单位都是一个字。
1KB=1024Byte =2的10次方B
1MB=1024KB
1GB=1024MB
注:KB、MB、GB等不是新的存储单位,而是基于字节换算的单位。
2.2数据表现形式
2.2.1数值型
二进制,八进制,十进制,十六进制
日常生活中,我们都是采取逢十进一的十进制,而二进制等进制算法便如其名,逢二/八/十六进一。二进制是计算机所能识别的进制数字,所有的数据在计算机中存储归根结底都是以二进制形式存储。当一位上超过9时,数字便以字母a~f表示(即a对应11,b对应12,c对应13等),八进制我们一般以0开头作为标志,十六进制我们以0x开头作为标志。
以下皆为十进制转换:
二进制例子:1-->01 2-->10 5-->101 8-->1000
八进制例子:8-->010 9-->011 15-->017 26-->032
十六进制例子:16-->0x01 17-->0x11 31-->0x1F 54-->0x36
2.2.2非数值型
常见ASCII码,词法符号
1)常见ASCII码
字符‘0’-48得数字0;
大写字母字符+32得对应的小写字母字符;
小写字母字符+32得对应的大写字母字符;
\0作为字符串结束的标志(字符串后面会讲解,初学者可以单纯的记忆即可)
\n换行符 ASCII码:10
空格 ASCII码:32
2)词法符号
32个关键字(建议熟练记忆)
所谓关键字便是在系统中预定义的具有特殊功能的一些字符串。
数据类型(8个):
char(字符型数据)、short(短整型数据)、int(整型数据)、
long(长整型数据)、signed(有符号型)、unsigned(无符号型)、
float(浮点型)、double(双精度浮点型)、void(空)
构造类型(4个)
struct(结构体)、union(共用体)、enum(枚举体)
循环控制语句(5个)
for、do、while、break、continue
条件语句(3个)
if、else、goto
选择语句(3个)
switch、case、default
返回语句(1个)
return
存储类型关键字( 5 个)
auto(自动型)、extern(外部引用)、register(寄存器类型)、static(静态区)
其他关键字( 3 个)
const(只读,通常理解为常量修饰)、sizeof(预定义函数名,计算数据所占空间大小)、
volatile(防止编译器优化)、typedef(重定义)
运算符
算术运算符:
顾名思义,算术运算符是适用于算术的运算符,我们日常生活中的加(+)减(-)乘(*)除(/)都属于这类。需要注意的是,C语言中的除法为向下取整运算,且会根据使用的参数类型更改获得的商的类型。
例如:
5/2 .............. C中将获得的值为2
小学数学很明确的告诉我们,5/2=2.5,或者 得2余1
C中的除便是如上的整数部分,即“取整”
再例如:
5.0/2.0 .............. C中将获得的值为2.5
此时即满足上文所说 “根据使用的参数类型更改获得的商的类型”
C不只有取整,还有取余(%),对应上文可理解为获得的为余数部分。
例:5%2 .............. C中将获得的值为1
逻辑运算符:
逻辑运算符是一类表示逻辑关系的运算符,需要明确一点的是:
在C语言中,非0即为真(true),0为假(false)。
此处的真也就是真命题,是正确的意思;相应的,假便是只得假命题(伪命题),即错误的意思。
&&(逻辑与):
全真则真,一假则假
||(逻辑或):
一真则真,全假则假
!(逻辑非)
非真即假,非假即真
截断法则:
逻辑或运算中:如果前面的表达式为真,则后面的表达式不执行
逻辑与运算中:如果前面的表达式为假,则后面的表达式不执行
此处开始便逐渐导入C程序代码,方便读者逐步熟悉C编程
int main()
{
int a=5,b=6,c=7,d=8,m=2,n=2; //定义变量a,b,c,d,m,n且同时赋初值
(m=a>b)&&(n=c>d); //实际上我们都知道a=5<b=6,所以m即为0
//由于截断法则,前面的m为0,故而后面的(n=c>d)不再执行,所以n还是初始化时的赋值2
printf("%d %d",m,n); // 0 2
}
//main()为主函数,在C中执行的便是main函数,{}内便是主函数中要执行的操作,
//后面我们会有很多函数,但是无论函数有多少,在运行时依旧是运行的main函数中的内容。
//printf()为输出函数
//内部参数“%d”是控制输出格式为整型(int)形,每有一个控制格式的参数,
//后面就应有几个要输出的变量。
位运算符:
前文提过,计算机内的数据都是以0,1的二进制数据表示,故而我们的位运算便是此基础上进行的操作。
&(位与):
全1则1,有0则0
|(位或):
有1则1,全0则0
^(异或):
不同为1 , 相同为0
~:
取反(通过补码进行操作)按位取反 0 -> 1
原码 反码 补码
正数 本身 本身 本身
负数 本身 除符号位其他按位取反 反码+1
例如:~15
正数原码:0000 0000 0000 0000 0000 0000 0000 1111
正数补码:0000 0000 0000 0000 0000 0000 0000 1111
~: 1111 1111 1111 1111 1111 1111 1111 0000
取反码:1000 0000 0000 0000 0000 0000 0000 1111
+1: 1000 0000 0000 0000 0000 0000 0001 0000
<<:左移(以补码形式运算)
左移几位,右边补几个零
8<<2 =32
-5 << 3 = -40
同理,>>为右移
右移几位,左边补几个符号位
置一公式:a|(1<<n) 将第n位置1
置零公式:a&(~(1<<n)) 将第n位置0
赋值运算符:
= :赋值运算;
+=:a = a+b —> a+=b 等效,同理 还有-= ,*=, /=
关系运算符
关系运算符即表示变量之间关系的运算符。
> :大于
< :小于
>=:大于等于
<=:小于等于
==:相等
!=:不等于
例:
1<x<5 => x>1 && x<5
关系运算符:
条件运算符又称作三目运算符
表达式1?表达式2:表达式3;
运算法则:先判断表达式1是否成立,如果成立就执行表达式2;否则就执行表达式3;
int a=3,b=5;
int c = a>b?a++:++b; // int c = ++b;
c=? // 6
优先级问题:
单目运算符 ! ~ ++ --
算术运算符 * / % + -
移位运算符 << >>
关系运算符 < <= > >= == !=
位与运算符 &
异或运算符 ^ |
逻辑运算符 && ||
条件运算符 ?:
赋值运算符 = += *= /= %= ...
口诀: 单算移关与 异或逻条赋
从右向左单条赋
标识符
命名规则:
1.由数字、字母、下划线组成
2.开头不能是数字
3.不能和关键字重复
4.见名知义
分隔符与标点符号不做详细赘述。
1.标点符号
, ; () {} []等
2.分隔符
换行 空格 tab
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。详细想了解可查询:百度百科:ASCII码 ↩︎