【C语言零基础教学】——基础篇1顺序程序设计(上)

一.数据类型

1.常量和变量
(1)常量:在程序运行过程中,其值不能被改变的量称为常量。
分类:
①整型常量(如100,123,0,-345)
②实型常量:十进制小数形式(如123.456,12.0,0.0,-56.12),指数形式(如12.34e3代表12.34×10³,此处e也可以用E代替,但应注意e或E之前必须有数字)
③字符常量:普通字符:用单撇号括起来的一个字符(如’a’,‘?’,‘3’),转义字符:一些常见的转义字符及作用如下:
在这里插入图片描述

ps:字符常量只能是一个字符,不包括单撇号。'a’和’A’是不同的字符。字符常量存储在计算机存储单元中,并不是存储字符本身,而是以其代码(一般采用ASCII代码)存储的–以二进制的形式存放。
④字符串常量:字符串常量是双撇号中的全部字符(但不包括双撇号本身),如“boy”,“123”。单撇号内只能包含一个字符,双撇号内可以包含一个字符串。
ps:以上都为字面常量,从其字面形式上即可识别的常量 称为“字面常量”或“直接常量”。字面常量是没有名字的不变量。
⑤符号常量:用#define指令,指定用一个符号名称代表一个常量。如:#define PI 3.1415。
好处:含义清楚;在需要改变程序中多处用到的同一个常量时,能做到"一改全改"。
ps:要区分符号常量和变量,不要把符号常量误认为变量。符号常量不占内存,只是一个临时符号,代表一个值,在预编译后这个符号就不存在了,故不能对符号常量赋新值。习惯上符号常量用大写表示。
⑥枚举常量。
(2)变量:变量代表一个有名字的,具有特定属性的一个存储单元。它用来存放数据,也就是存放变量的值。在程序运行期间,变量的值是可以改变的。变量必须先定义,后使用。
ps:注意区分变量名和变量值的概念。从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。
变量使用的基本步骤:

声明变量int num;
赋值num = 60;
使用printf("num=%d", num);
也可以一步到位 : int num2 = 99;

(3)常变量:C99允许使用常变量,方法是在定义变量时,前面加一个关键字const,如const int a=3。
常变量与常量的异同:常变量具有变量的基本属性:有类型,占存储单元,只是不被允许改变其值。可以说,常变量是有名字的不变量,而常量是没有名字的不变量。
ps:#define Pi=3.1415和const float pi=3.1415有什么不同。
性质不同:定义符号常量用#define指令,它是预编译指令,它是用符号常量代表一个字符字符串,在预编译时仅进行字符替换,在预编译后,符号常量就不存在了,对符号常量的名字是不分配存储单元的。而常变量要占用存储单元,有变量值,只是该值不改变而已。
(4)标识符:在计算机高级语言中,用来对变量,符号常量名,函数,数组,类型等命名的有效字符序列统称为标识符。
C语言规定标识符只能由字母,数字和下划线3种字符组成,且第一个字符必须为字母或下划线。
ps:一般而言,变量名用小写字母表示。
2.基本数据类型
为什么在用计算机运算时要指定数据的类型呢?
因为在计算机中,数据是存在存储单元中的,它是具体存在的。而且,存储单元是由有限的字节构成的,每一个存储单元中存放的范围是有限的,不可能存放“无穷大”的数,也不能存放循环小数。
所谓类型,就是对数据分配存储单元的安排,包括存储单元的长度(占多少字节)以及数据的存储形式。不同的类型分配不同的长度和存储形式。
在这里插入图片描述ps:基本类型和枚举类型变量的值都是数值,统称为算术类型。算术类型和指针类型统称为纯量类型,因为其变量的值是以数字来表示的。数组类型和结构体类型统称为组合类型,共用体类型不属于组合类型,因为在同一时间内只有一个成员具有值。
函数类型用来定义函数,描述一个函数的接口,包括函数返回值的数据类型和参数的类型。
(1)整型数据:
①分类:
A.基本整型(int型):编译系统分配给int型数据2个字节或4个字节,1个字节占8位。用整数的补码形式存放。一个正数的补码是此数的二进制形式。求负数的补码的方法是:先将此数的绝对值写成二进制形式,然后对其所有二进制按位取反,再加1。例子如下(两个字节存放一个整数):
在这里插入图片描述最左面一位用来表示符号,0为正数,1为负数。
B.短整型(short int)2个字节。
C.长整型(long int)4个字节。
D.双长整型(long long int)8个字节。适用于C99。
②整型的符号属性:
在这里插入图片描述ps:①可以在类型符号前面加上修饰符unsigned,表示指定该变量是无符号整数类型。如果加上修饰符signed,则是有符号类型。如signed int a和int a等价。
②只有整型(包括字符型)数据可以加signed或unsigned修饰符,实型数据不能加。
③对无符号整型数据用“%u”格式输出。%u表示用无符号十进制数的格式输出。
(2)字符型数据:
①字符与字符代码:目前大多数系统采用ASCII字符集。
②字符变量:用类型符char定义字符变量,占一个字节,字节中第1位置为0。在输出字符变量的值时,可以选择以十进制整数形式输出(d%),或以字符形式输出(c%)。
ps:字符’1’和整数1是不同的概念。
在这里插入图片描述字符的代码不可能为负值,所以存储在存储字符时只用到0-127这一部分,其第一位都为0。
(3)浮点型数据:由于小数点位置可以浮动,所以实数的指数形式称为浮点数。
①float型(单精度浮点型):4个字节存储,系统将实型数据分成小数部分和指数部分两个部分分别存放,小数部分的小数点前面的数为0。在4个字节中,C标准没有具体规定用多少位表示小数部分和指数部分。由于用二进制形式表示一个实数以及存储单元的长度是有限的,因此不可能得到完全精确的值,只能存储成有限的精确度。
②double型(双精度浮点型):8个字节存储。
③long double型(长双精度):8个字节或16个字节。
在这里插入图片描述

(4)确定常量的类型
常量也有类型,从常量的表现形式即可以判定其类型。①对于字符常量只要看到由单撇号括起来的单个字符或转义字符就可以知道它是字符常量。②对于数值常量,整型常量和浮点型常量。
ps:可以在常量的末尾加专用字符,强制指定常量的类型。

二.运算符和表达式

1.运算符:C运算符,基本的算术运算符,自增,自减运算符,
2.算术表达式和运算符的优先级与结合性
(1)C算术表达式:用算术运算符和括号将运算对象(也称操作数)连接起来的,符合C语法规则的式子。
(2)运算符的优先级:如先乘除后加减
(3)结合性:运算符级别相同,自左向右,又称左结合性;赋值运算符,自右向左,又称右结合性。
3.不同类型数据间的混合运算
如果一个运算符两侧的数据类型不同,则先自动进行类型转换,使二者成为同一种类型,然后进行运算。规律为:p54
4.强制类型转换运算符
格式:(类型名)(表达式)–也包括括号。
有两种类型转换。一种是系统自动进行的类型转换。另一种是强制类型转换,强制类型转换运算优先于%运算。(根据附录C)

三.C语句

1.一个函数包含声明部分和执行部分,执行部分是由语句组成。一个C程序可以由若干个源程序文件(编译时以文件模块为单位)组成,一个源文件可以由若干个函数和预处理指令以及全局变量声明部分组成。一个函数由数据声明部分和执行语句组成。
在这里插入图片描述

2.C语句分类:
(1)控制语句:
①条件语句:if()…else…
②循环语句:for()…
③循环语句:while()…
④循环语句:do…while()
⑤结束本次循环语句:continue
⑥中止执行switch或循环语句:break
⑦多分支选择语句:switch
⑧从函数返回语句:return
⑨转向语句,在结构化程序中基本不用goto语句:goto
ps:()中为判别条件,…表示内嵌的语句。
(2)函数调用语句:由一个函数调用加一个分号构成,例如printf函数。
(3)表达式语句:由一个表达式加一个分号构成,例如a=3;为赋值语句,而a=3为赋值表达式。
(4)空格句:可以用来作为流程的转向点,也可以用来作为循环语句的循环体。
(5)复合语句:可以用{}把一些语句和声明括起来成为复合语句(又称语句块)。复合语句常用于if语句或循环中。
3.最基本的语句–赋值语句
(1)赋值运算符:“=”,它的作用是将一个数据赋给一个变量,也可以将一个表达式的值赋给一个变量。
(2)复合的赋值运算符:例如,a+=3等价于a=a+3。
(3)赋值表达式:①一般形式为变量 赋值运算符 表达式。②赋值表达式具有计算和赋值的双重功能。③赋值运算符左侧应该是一个可修改值的左值,左值应当为存储空间并可以被赋值④变量可以作为左值,而算术表达式不能作为左值,常量也不能作为左值,因为常量不能被赋值。⑤左值也可以出现在赋值运算符右侧,如a=b。⑥赋值表达式中的“表达式”又可以是一个赋值表达式,例如a=(b=5)等价于a=b=5。⑦赋值操作不仅可以出现在赋值语句中,而且可以以表达式的形式出现在其他语句中(如输出语句,循环语句等)。
(4)赋值过程中的类型转换:①赋值运算符两侧类型一致,直接进行赋值。②赋值运算符两侧类型不一致且都是基本类型时:浮点赋给整型时,对浮点数取整。③整型赋给单,双精度变量时,数值不变,但以浮点数形式存储到变量中。④将一个double型数据赋给float变量时,先将双精度数转换为单精度,即只取6~7位有效数字,存储到float型变量的四个字节中。应注意双精度数值的大小不能超出float型变量的数值范围。⑤字符型数据赋给整型变量时,将字符的ascii代码赋给整型变量。⑥将一个占字节多的整型数据赋给一个占字节少的整型变量或字符变量时,只将其低字节原封不动地送到被赋值的变量。
(5)赋值表达式和赋值语句:上面已经叙述过。
(6)变量赋初值:
例如:
①int a,b,c=3;表示只对c初始化
②int a=3,b=3,c=3;表示对a,b,c都进行初始化,不能写成int a=b=c=3;

参考书目:谭浩强.C程序设计(第五版).北京:清华大学出版社,2017.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值