C基础——词法符号(嵌入式学习)-创新互联

词法符号
  • 概念
  • 关键字(32个)
    • 概念
    • 分类
      • 存储类型
      • 数据类型
      • 构造类型
      • 选择结构
      • 循环结构
      • 其他
  • 标识符
  • 运算符
    • 算术运算符
    • 逻辑运算符
    • 位运算符
    • 关系运算符
    • 赋值运算符
    • 三目运算符
    • 运算符的优先级
    • 分隔符
    • 标点符号

专注于为中小企业提供网站设计、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业荥阳免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。概念

程序设计中由若干字符组成的有意义的最小语法单位

按照作用分类:关键字、标识符、运算符、分隔符、标点符号

关键字(32个) 概念

关键字是由系统预定义的具有特殊功能的词法符号

分类 存储类型

auto
关键字auto用于声明一个变量为自动变量
自动变量也称局部变量。将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。所有局部变量默认都是auto,一般省略不写。

static
普通局部变量是再熟悉不过的变量了,在任何一个函数内部定义的变量(不加static修饰符)都属于这个范畴。编译器一般不对普通局部变量进行初始化,也就是说它的值在初始时是不确定的,除非对其显式赋值。
变量在全局数据区分配内存空间;编译器自动对其初始化
其作用域为局部作用域,当定义它的函数结束时,其作用域随之结束
extern
一种是需要建立存储空间的。
例如:int a 在声明的时候就已经建立了存储空间。
另一种是不需要建立存储空间的,通过使用extern关键字声明变量名而不定义它。
例如:extern int a 其中变量 a 可以在别的文件中定义的。
简单总结:除非有extern关键字,否则都是变量的定义。
register
register修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在CPU的寄存器中,以加快其存储速度。
但是使用register修饰符有几点限制:
(1)register变量必须是能被CPU所接受的类型。
(2)不能用“&”来获取register变量的地址。
(3)只有局部自动变量和形式参数可以作为寄存器变量,其它(如全局变量)不行。
(4)局部静态变量不能定义为寄存器变量。不能写成:register static int a, b, c;
(5)不能定义任意多个寄存器变量,而且某些寄存器只能接受特定类型的数据

数据类型

char、short 、int、 long 、float、double 、signed、unsigned
在这里插入图片描述
signed对应的即unsigned,后者意为无符号。其实说signed很常见也不见得,因为我们常用的int、short和long,以及long long,默认情况下都是signed有符号的。所以相比起来unsigned的戏份可能比signed更多,signed在这里只是相当于刻意地去说明其后面的变量是有符号类型的。
signed就是带符号位的那种存储方式,unsigned就是不带符号位的那种存储方式,且unsigned只表示非负数

构造类型

struct、union、enum

struct
通俗来讲,就是打包封装一些有共同特征的不同数据的变量封装在内部,通过一定方法访问修改内部变量。可以说,结构体是让一些很散的数据变得很整(即井然有序)。

语法:struct 结构体名 { 结构体成员列表 };
struct 结构体名 变量名
struct 结构体名 变量名 = { 成员1值 , 成员2值…}
定义结构体时创建变量

union
union,中文名“联合体、共用体”,在某种程度上类似结构体struct的一种数据结构,共用体(union)和结构体(struct)同样可以包含很多种数据类型和变量。但在“联合”中, 各成员共享一段内存空间, 一个联合变量的长度等于各成员中最长的长度 。一个联合体类型必须经过定义之后, 才能使用它,才能把一个变量声明定义为该联合体类型。
当定义结构对象时,如果没有显式地初始化它们,则会采用一般初始化规则:如果该结构对象属于动态存储类型,那么其成员具有不确定的初始值。如果结构对象具有静态存储周期,那么其非指针成员初始值是 0,其指针成员初始值是空指针。

struct和union和区别
1.结构和联合都是由多个不同的数据类型成员组成的,但是在任一时刻联合只存放一个被选中的成员,而结构的所有成员都存在。
2。对于联合的不同成员赋值,将会对其他成员重写,原来成员的值就不存在了,而对结构的不同成员赋值是会不影响的。
对联合变量的赋值,都只能对变量的成员进行,一个联合变量每次只能赋值给一个成员,一个联合变量的值就是当前联合变量的某一个成员值。

enum
1、标识枚举类型。定义枚举类型必须用enum开头。
2、枚举数据表中的名字是程序员自己设定,这些名字只是一个符号。但注意命名时要提高程序的可读性。枚举型是一个集合,集合中的元素(枚举成员)是一些命名的整型常量,元素之间用逗号,隔开。
3、枚举数据表的值都是整数。第一个枚举成员的默认值为整型的0,后续枚举成员的值在前一个成员上加1。也可以人为设定枚举成员的值,从而自定义某个范围内的整数。
3、可以在定义类型时对枚举常量初始化。
4、枚举类型可以进行比较。
5、枚举常量不是字符串,不能用%s方式输出字符串。
6、枚举型是预处理指令#define的替代

选择结构

if、else、switch、case、default(先了解后期心情好了再更新)

循环结构

for、while、goto、do、break、continue (先了解后期心情好了再更新)

其他

void(空类型)、typedef(重定义)、volatile(防止编译器优化)、const(只读修饰、常量化)、sizeof(计算数据所占空间大小)、return(返回值) -----------(先了解后期心情好了再更新)

标识符

标识变量、函数或其他用户自定义的项目名称
遵循规则:
1.由数字、字母、下划线组成
2.开头不能是数字
3.不能和关键字重复
4.见名知义

运算符 算术运算符

== + - * / % ++ – ==
**/:**整数相除,向下取整
**%**只能用于整数运算
**++:**如果++作为表达式参与运算,要注意++的前后位置,来判断是先运算还是先取值。
例子
1)int b = ++a;//先自加后赋值
2)int c = a++;//先赋值后自加
3)printf("%d\n",++a);//4 ++在前,先自加后打印
4)printf("%d\n",a++);//3 ++在后,先打印后自加
5)int a=3;a++;printf("%d\n",a);//4
6)int a=3;++a;printf("%d\n",a);//4
相当于:a=a+1;不等同于a+1

逻辑运算符

&& || !
运算法则:
&&(逻辑与):全真为真,一假则假
||(逻辑或):一真则真,全假则假
!(逻辑非):非真即假,非假即真
截断法则:
逻辑与运算中,如果前面的表达式为假,则后面的表达式不执行
逻辑或运算中,如果前面的表达式为真,则后面的表达式不执行

位运算符

& | ~ ^<< >>
&:全1则1,有0则0
|:有1则1,全0则0
^:异或
~:按位取反,0变1,1变0
.<<:左移左移几位右边补几个0
.>>:右移
右移几位,左边补几个符号位

关系运算符

< >>=<= == !=

赋值运算符

= += -= *= /= %=
等号右边赋值给等号左边

三目运算符

表达式1?表达式2:表达式3
运算法则:先执行表达式1,然后判断表达式1是否成立,如果成立就执行表达式2,否则就执行

运算符的优先级

单目运算符 ! ~ ++ –
算术运算符 * / % + -
移位运算符<< >>
关系运算符<<= >>= == !=
位与运算符 &
异或运算符 ^ |
逻辑运算符 && ||
条件运算符 ?:
赋值运算符 = += *= /= %= …
口诀: 单算移关与 ;异或逻条赋; 从右向左单条赋

分隔符

分号,逗号,大括号,中括号,小括号

标点符号

换行、空格、tab

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

文章题目:C基础——词法符号(嵌入式学习)-创新互联
当前链接:https://www.cdcxhl.com/article24/sphce.html

成都网站建设公司_创新互联,为您提供虚拟主机营销型网站建设品牌网站制作域名注册网站维护自适应网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

外贸网站制作