提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
本文将介绍C语言的基础知识,包括数据类型,运算符,表达式,语句,循环,分支,跳转,函数,数组,结构体,联合体,指针和宏定义等
提示:以下是本篇文章正文内容,下面案例可供参考
一、C数据类型
数据类型决定:
- 数据占内存字节数
- 数据取值范围
- 其上可进行的操作
1.整型常量
特点:无小数点,有范围限制
三种表示形式:
十进制整数:由数字0~9和正负号表示。 如123,-456,0
八进制整数:由数字0开头,后跟数字0~7表示。 如0123,011
十六进制整数:由0x或0X开头,后跟0~9,a~f,A~F表示。 如0x123,0Xff
长整型常量:789L、017L、0x12aL(用l或L引出)
2.实型常量
特点:带小数点的数,绝对值很大但不带小数点的数
表示方式:小数 例:12.3
指数形式 例:1.23e1
3.字符常量
特点:用‘’括起来的单个普通字符或转义字符
表示方式:普通字符 例: ‘a’
转义字符 例: ‘\n’
字符的ASCII码值
4.字符串常量
字符串:双引号括起来的一串字符
字符串结束标志:’\0’
字符串的内部表示方法
注意:
字符和字符串表示形式的区别
数字和数字字符的区别
空字符‘\0’和空格字符‘ ’的区别
5.符号常量
特点:利用预处理命令定义
例如:#define PI 3.14
二、运算符与表达式
运算符:C语言中描述数据运算的特殊符号。
表达式:用运算符将C语言的各种运算对象连接起来,组成符合C语法要求的式子。
##C的运算符的三要素:
优先级(决定混合运算中的先后次序)
几目 (操作数的个数)
结合方向
1算术运算符与表达式
五种基本算术运算符
加法运算符或正值表达式(+)
减法运算符或负值表达式(-)
乘法运算符(*)
除法运算符(/)
求余运算符(%)两端必须均为整型
算术表达式
由算术运算符、括号和任何有值的对象连接起来的符合C语言要求的式子称为算术运算表达式
2.自增(减)运算符与表达式
*自增(++)、自减(- -)运算
作用:自增运算使单个变量的值加1,自减运算使单个变量的值减 1
*表达式: 变量++(++变量)
1)自增、自减运算符单独使用时,前置和后置运算方法完全相同。
2)自增、自减运算符和其他运算符组成复合表达式时前置和后置运算是两种不同的方法:
a. 前置运算──运算符放在变量之前: ++变量、–变量 先自增(减)后运算
b.后置运算──运算符放在变量之后:变量++、变量-- 先运算后自增(减)
说明:
自增、自减运算,常用于循环语句和指针变量中。
自增、自减运算符,不能用于常量和表达式。
在表达式中,最好避免连续使同一变量进行自增或自减运算
3.赋值运算符与表达式
简单的赋值运算符 :=、
功能:将一个数据值写入到变量对应的内存空间中。
赋值表达式:变量=确定的值 例如:a=4; c=a+b;
赋值表达式的值即变量的值。
4.复合赋值运算
复合赋值运算符是由赋值运算符之前再加一个双目运算符构成的。
复合赋值运算的一般格式为:
变量 双目运算符 = 表达式
└──┬──┘
复合赋值运算符
等价于:变量= 变量 双目运算符 (表达式)
求解:变量=变量 <运算符>表达式
C 语言规定的10 种复合赋值运算符如下:
+= -= = /= %= /复合算术运算符 5 种/
&= ^= |= <<= >>= /复合位运算符 5种/
例如:
x += 3 / 等价于x=x+3 /
y = x + 6 / 等价于y=y(x+6),而不是 y=y*x+6 */
5.位运算符
&:只有参与运算的两个二进位均为1时,结果位才为1,否则为0,参与运算的数以补码方式出现
0&0=0 0&1=0 1&0=0 1&1=1
| :只要参与运算的二个二进位有一个为1时,结果位就为1,参与运算的两个数均以补码出现
0|0=0 0|1=1 1|0=1 1|1=1
^ :参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1,参与运算数仍以补码出现。 相同为0,不同为1
0^0=0 0^1=1 1^0=1 1^1=0
>>:把“>>”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,很多系统规定为补1。
<<:把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0
~:对参与运算的数的各二进位按位求反
注意:
运算对象只能是整型或字符型的数据,不能为实型数据
位运算主要是针对二进制位的运算
6.条件运算符
条件运算符是C语言中唯一一个三目运算符(Ternary Operator),带三个操作数,它的形式是表达式1 ? 表达式2 : 表达式3
这个运算符所组成的整个表达式的值等于表达式2或表达式3的值,取决于表达式1的值是否为真,可以把它想像成这样的函数:
if (表达式1) return表达式2; else return表达式3;
7.逗号运算符
逗号运算符也是一种双目运算符,它的形式是表达式1, 表达式2
,两个表达式不要求类型一致,左边的表达式1先求值,求完了直接把值丢掉,再求右边表达式2的值作为整个表达式的值。逗号运算符是左结合的,类似于±*/运算符,根据组合规则可以写出表达式1, 表达式2, 表达式3, ...
, 表达式n这种形式,表达式1, 表达式2可以看作一个子表达式,先求表达式1的值,然后求表达式2的值作为这个子表达式的值,然后这个值再和表达式3组成一个更大的表达式,求表达式3的值作为这个更大的表达式的值,依此类推,整个计算过程就是从左到右依次求值,最后一个表达式的值成为整个表达式的值。
注意,函数调用时各实参也是用逗号隔开,那个逗号不能看作逗号运算符。但可以这样:
f(a, (t=3, t+2), c)传给函数f的有三个参数,第二个参数的值是表达式t+2的值。
三,语句
C语句分为以下五类:
1.控制语句(9条)
2.表达式语句
3.空语句
4.复合语句
5.函数调用语句
1.控制语句
条件判断语句:
if语句 (用于实现双分支选择)
switch语句 (用于实现多分支选择)
循环执行语句:
do while语句 (用于实现直到型循环)
while语句 (用于实现当型循环)
for语句 (用于实现当型循环)
转向语句:
break语句
continue语句
goto语句
return语句 (函数返回语句)
2.表达式语句
表达式语句由一个合法的C语言表达式加上分号“;”组成。
一般形式为: 表达式;
3.空语句
只有分号“;”组成的语句
一般用来完善选择结构和循环结构
4.复合语句
用{}把多条语句括起来成为复合语句,又称块语句
5.函数调用语句
由函数名、实际参数加上分号“;”组成。
一般形式为:
函数名(实际参数表列);
四,循环
在C语言中有四条可以实现循环结构的语句:
1)while 语句
2)for 语句
3)do – while 语句
4)if – goto 语句
1.while 语句
功能:用于实现当型循环结构
一般形式:`
while(逻辑量)
{
循环体语句;}
当逻辑量值为真的时候,执行循环体语句
注意事项:
循环体有可能一次也不执行
尽量避免无限循环,如:while(1)死循环
循环体内可以加入break、return、goto结束循环
循环体内包含一个以上的语句,应该用{}括起来组成复合语句。
2.do-while循环
功能:用于实现直到型循环
一般形式:
do
{
循环体语句;
}while(逻辑量);
执行循环体语句,直到逻辑量为假结束
注意while(逻辑量)后边的“;”
3.for语句
功能;用来实现当型循环
一般形式:
for(表达式1;表达式2;表达式3)
{
循环体语句;
}
执行过程:
1.先计算表达式1
2.计算表达式2,为真执行循环体语句,否则结束循环
3.计算表达式3
4.转到第二步继续执行
for语句使用最多的情况:
for(循环变量赋初值;循环条件;循环变量增量)
{
循环体语句;
}
注意:for语句后边括号中的三个表达式可以省略,可是括号中的两个分号不能省略
for语句格式补充说明:
语法格式:
for(表达式1;表达式2;表达式3)
循环体语句;
循环体多步操作构造复合语句
表达式1、2、3均可省略
表达式1省略:循环控制变量之前已初始化
表达式2省略:条件为真
表达式3省略:循环体内处理
‘;’是格式要求,不能省略
循环嵌套
三种循环可互相嵌套,层数不限
外层循环可包含两个以上内循环,但不能相互交叉
嵌套循环的执行流程
嵌套循环的跳转
while(<