c语言学习笔记_2基本词法语法规则

本文详细介绍了C语言的基本词法和语法规则,包括字符集、词法元素、语法规则、标识符、关键字、数据类型、符号常量、变量定义、运算符及表达式、位运算和类型转换等方面的知识。通过本文,读者可以系统地学习C语言的基础概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

****2015年11月23日19:11:43

2_基本词法语法规则

2-1-1字符集

三字符序列
eg:“??(” <=>“ [”//以两个问号加一个符号来替换另一个符号,共有九个

2-1-2词法元素

编译器对字符序列进行词法分析,被特定规则分解为记号(程序中具有语义的最基本组成单元)
记号分类:标识符,关键字,常量(含字符串常亮),运算符,标点符号;
编译器从左到右收集字符,尽量建立最长的记号,即使结果并不能构成有效的c语言程序
相邻记号可以用空白符或注释句隔开
eg:
分析:  
sum=x+y;//sum、=、x、+、y共五个记号
x+++++y;//x、++、++、+、y共五个字符,无效c语法,而x++ + ++y是有效语句
…………………………………………………………………………………………

2-2语法规则

实数的BNF范式://等价于<实数>::=<整数部分>.<小数部分>|.<小数部分>
    <实数>::=<整数部分>.<小数部分>
    <整数部分>::=<数字>|<整数部分><数字>
    <小数部分>::=<数字>|<数字><小数部分>
    <数字>::=0|1|2|3|4|5|6|7|8|9
实数的EBNF范式:
    <实数>::=[<整数部分>].<小数部分>
………………………………………………………………………………………………………

2-3-1标识符的BNF范式:

<标识符>::=<字母>|<字母数字>
<字母数字>::=<数字>|<字母>
<字母>::=<小写字母>|<大写字母>
<大写字母>::=A|B|C|D|……|Z
<小写字母>::=a|b|c|d|……|z
<数字>::=0|1|2|3|4|5|6|7|8|9

2-3-2关键字

   即保留字,系统赋予的特定含义的并有专门用途的标识符,不能作为普通标识符给变量函数或标号等命名,可作为宏名(预处理发生在这些关键字之前)

2-3-3空白符

即空白字符:空格符,制表符,换行符,换页符,注释符(五种)
作用:分隔字符

2-4-1数据类型的分类

基本类型: 整型      字符型       浮点型         复数类型
导出类型: 指针      数组         结构             联合
空类型

2-4-2基本类型的名字

char变量用于保存8位的ASCII码字符,也可储存8位二进制数

2-4-3

在不要求大整数的情况下可用字符型代替整型,整型也可以表示字符,只不过用格式控制符控制一下

2-4-5

浮点类型的存储方式
    在计算机中,用二进制分别存储实数的符号位,
    有效数字位(1<=尾数<2,原码中省略1),
    指数位(阶码,用移码表示,float偏移值为127,如果阶码等于3,则保存成130即10000010)

    即:二进制浮点数V = (-1)^s * M * 2^e   
    //s符号位,M尾数,即有效数字,e指数位(阶码)

float型====符号区(1bit)指数区(8bit)尾数区(23bit)====
    位数决定精度(float约7位,double约15位)
    阶码决定范围(float 10^+-38 | double 10^+-308)

在值的可表示范围之内,整数一定是精确表示,浮点数的表示只可能是近似的;
不能使用==、!=运算符比较float和double类型的数据

2-5-1

文字常量
    整型浮点型常量可以使用后缀来指定其类型(U无符号UL无符号长L长LL长长ULL无符号长长)eg:0XFUL
    字符常量是一个整数,其值为该字符在ASCII字符集中的字符码。
    单引号即定界符,是字符常量的标志。
    图形字符,转义字符(以反斜线开头的特殊字符序列)
    '\0'常用于表示一个字符串结束,ASCII值为0,不等同于空格
字符串常量:
    "字符序列",字符序列可以是图形符号,可以是转义序列,单引号可以用图形符号表示,双引号和反斜线必须用转义序列表示
    “3'40\"\t”指“ 3  '  4  0  "  \t ”共6个字符。
    书写字符串时不能中途换行,要想将长字符串分行写要用行连接,即续行符连接:
        "hello,\
        how are you?"
    字符串常量就是字符数组,末尾自动填'\0'作为字符串结束的标志
    ==##strlen(s)函数用来返回字符串s的长度##==
int strlen(char s[])
{
int i;
i = 0;
while(s[i] != '\0')
++i;
return(i);
}
int main ()
{
printf("%d\n",strlen("world") );
return 0;
}

2-5-2符号常量

   即标识符,给文字常量,各类型变量定义的名字
   定义方法:
          1、用# define指令定义一个符号常量;(文本替换,没有存储空间)
                 # define 标识符  常量
          2、用const声明语句定义一个符号常量;(有
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值