云边日落 夜阑卧听风吹雨,铁马冰河入梦来。 (宋·陆游·十一月四日风雨 大作)
博主 云边日落
渝ICP备2021002886号-1渝公网安备50022502000591号博主 11月5日 在线自豪地使用 Typecho 建站搭配使用 🌻Sunny 主题当前在线 1 人
歌曲封面 未知作品
  • 歌曲封面“魔女の宅急便”~ルージュの伝言松任谷由実

渝ICP备2021002886号-1

渝公网安备50022502000591号

网站已运行 4 年 152 天 18 小时 25 分

Powered by Typecho & Sunny

2 online · 43 ms

Title

C语言的语法

郭儿宝贝

·

·

183次阅读
编辑语言
Article
⚠️ 本文最后更新于2021年07月13日,已经过了1227天没有更新,若内容或图片失效,请留言反馈

为了让计算机能够理解程序员在程序中处理相应的问题所编写的程序,用程序设计语言所写的程序必须符合相应语言的语法。

编写程序就像用某种自然语言(如中文)来写文章,首先语法得通,即要符合语言所规定的语法规则。当然,语法通了并不代表文章就符合要求了,你有可能词不达意或者偏题。这便是程序查错时需要注意的事,即找出程序中的错误。这是一个极需要耐心和细心的过程,你,准备好了吗?

源程序

一般把用程序设计语言编写的未经编译的程序称为源程序,又称源代码。
从语法的角度来看,源程序实际上是一个字符序列,这些字符序列按顺序分别组成了一系列“单词”。
这些“单词”包括语言事先约定好的保留字,如用来描述分支控制的 if,else 、常量、运算符,如 + - * / 和分隔符等。
正是这些“单词”的组合使语法单位变得有了意义,从而组成了有意义的语法单位。
下面我们来逐一介绍这些“单词”及其组成的语法单位。

C语言中的“单词”

标识符

C语言的标识符由字母、数字和下划线组成,其中第一个字符必须是字母或下划线。如: _namecount 是合法的标识符; left&right是非法的标识符。
其中,在C语言中,标识符中英文字母的大小写形式是有区别的。如: sumSum是两个不一样的标识符。

C语言中最主要的标识符是保留字和用户自定义标识符。

保留字

又称为关键字,是C语言中规定好的、赋予了特定含义和有专门用途的标识符,主要与数据类型和语句有关。
如: int是整型类型, float 是实数类型, typedef是自定义类型。 及与语句有关的 if else while 等。

用户自定义标识符

包括程序中定义的变量名、数据类型名、函数名和符号常量名。一般来说,为了便于系统阅读和程序员阅读,经常取有意义的英文单词作为用户自定义标识符。

常量

常量就是值不可改变、有数据类型的。
如:整型常量123,实型常量12.34,字符常量‘a’。

运算符

运算符表示对各种数据类型数据对象的运算。如: + — * / %(求余)
运算符一般多为双目运算,即涉及两个操作对象,如: 1+2 ;也有单目运算符(涉及1个操作对象: -2 )和三目运算符(如: 条件运算的?: 就是一个三目运算符)。

分隔符

如: [、](、)#等都是分隔符。

C语言中的语法单位

表达式

运算符和运算对象(可以是常量、函数、变量等,即可以包含多种数据类型的运算)的有意义组合就形成了表达式,如: i+2<j2+3*5等。
和数学式子相似的是,C语言的运算符也有优先级,例如乘除会比加减优先计算。

变量定义

变量有数据类型,所以在定义变量的时候要说明相应变量的类型,类型不同,变量在内存中所占用的存储空间的大小也会有所不同。
变量定义的最基本形式: 类型名 变量名
如: int i就定义了一个名叫i的整型变量。

语句

语句是程序最基本的执行单位,程序的功能便是通过执行一系列的语句来实现的。

最简单的语句

最简单的语句: 表达式; 即表达式外加一个分号“;”,C语言中赋值运算也算是一种运算,如 i=3+j(把j+3的结果赋值给变量i)就是一个包含+和=两种运算的表达式,+的优先级比较高。

分支语句

分支语句实现分支控制过程,根据不同的条件执行不同的语句(或语句模块)。如下例:

♾️ c 代码:
if(a>b){
 x=a;
}else{
 x=b;
}

表示:首先判别if后的表达式(a>b),如果条件成立 ,执行x=a;否则执行x=b;。

循环语句

C语言实现循环控制的过程具体有3种形式:while语句、for语句和do-while语句。

复合语句

用一对大括号 {} 将若干语句顺序组合在一起就形成了一个复合句。例如:
while语句中的:

♾️ c 代码:
{
    sum=sum+i;
    i++;
}
函数定义与调用

函数:

函数是完成特定任务的独立模块,是C语言唯一的一种子程序形式。
函数的目的:
通常是接收0个或多个数据(称为函数的参数),并返回0个或1个结果(称为函数的返回值)。
函数的使用,主要涉及函数的定义与调用,它们的定义如下:

Test

以下是函数定义的一个简单的例子,函数max求两个整数(作为参数)的较大值(作为返回值)。

♾️ c 代码:
int max(int a, int b)      /*函数头:函数类型函数名(函数参数列表) */
{                          /*函数体开始*/
    int x;                 /*函数中要用到的临时变量*/
    if (a>b){
        x=a;
    } else{
        x=b;
    }
    return x;               /*结束函数调用并返回x*/
}                           /*函数体结束*/

定义函数后,就可以在程序的其他地方调用这个函数。例如,程序中有result =max(2, 3),当程序执行到这里时,首先调用函数max(),并把实际参数2和3分别传给函数定义中的形式参数a和b,使a和b的值分别为2和3;然后,开始执行函数max()所定义的语句;当函数执行到 return x; 时,函数结束运行并把x的值3作为返回值;随后,程序的控制回到函数调用的地方,即result=max(2, 3),从而result 获得结果3。

在这里,写者要说一下C语言中的注释:

如上述代码例子:

♾️ c 代码:
 /*函数头:函数类型函数名(函数参数列表) */

括在一起的“ 函数头:函数类型函数名(函数参数列表)”即为例子所给的注释。

在C语言中有两种注释方式:

一种是以 结束的块注释,可以来标注一行内的注释,如:

♾️ c 代码:
int max(int a, int b)      /*函数头:函数类型函数名(函数参数列表) */

也可以标注多行的注释,如将已经运行的代码注释,被注释的代码就不会被执行:

♾️ c 代码:
int max(int a, int b)
{                    
    /*int x;            
    if (a>b){
        x=a;
    } else{
        x=b;
    }*/  
    /*在这里可以继续编写新的代码*/
    return x;              
}                        

另一种是以 // 开始、以换行符结束的单行注释,如:

♾️ c 代码:
int max(int a, int b)
{                    
    int x;        //这里定义了一个整形变量 x    
                 //单行注释只能注释一行 想要多注释可以再起一行
}               //这是注释         

如果想要注释掉包含块注释的部分程序,可以使用条件预处理命令:

♾️ c 代码:
#if 0
    const double pi = 3.1415926536;    /* pi是一个常量*/
    area = pi * r * r ;        /* 计算面积*/
#endif

预处理器会把每个注释都替换成一个空格。因此minValue 会变成两个标记 min Value

在编写C语言源代码时,应该多使用注释,这样有助于我们对代码的理解;而且当我们回顾以前的代码时也能知道代码的含义。

输入与输出

C语言没有输入输出语句,它通过调用系统库函数中的有关函数(如 printf()scanf() 函数)实现数据的输入与输出。这种处理方式为C语言在不同硬件平台上的可移植性提供了良好的基础。例如:
printf( "This integer value is %d",123 );
将输出:
This integer value is 123
printf( )函数的第一个参数是输出格式说明,%d表示将后面的数据123按十进制整数形式输出,其他字符串按原样输出。又如,以下输入语句:
scanf( "%d",&i);
将从键盘输人中读进一个整数,并把它存到变量i中。其中,scanf( )函数的第一个参数是输入格式说明。

C语言的发展历史与特点

发展历史

C语言作为计算机编程语言,具有功能强、语句表达简练、控制和数据结构丰富灵活、程序时空开销小的特点。它既具有诸如Pascal、FORTRAN、COBOL 等通用程序设计语言的特点,又具有汇编语言( Assemble Language)中的位(bit)、地址( Address)、寄仔奇(Register)等概念,拥有其他许多高级语言所没有的低层操作能力;它既适合于编写系统软件,又可用来编写应用软件。C语言的这些特点与其发展过程是密不可分的。

1972年,工作于贝尔实验室的DennisRitchie在B语言的基础上设计并实现了C语言。随后,Dennis Ritchie 又和Ken Thompson-起设想使用C语言来构造一批软件工具作为软件工作者的开发平台,这些平台包括不太依赖于计算机硬件的操作系统和语言编译软件。UNIX操作系统就是由他们两人用汇编语言编写而成的,并成为一种典型的分时操作系统。他们在1973年对UNIX作了重写,其中90%以上的代码是用C语言改写的,增加了多道程序设计能力,同时大大提高了UNIX操作系统的可移植性和可读性。
在以后的若干年中,C语言经过多次修改,渐渐形成了不依赖于具体机器的C语言编译软件,成为如今广泛应用的计算机语言之一。

目前,在各种类型的计算机和操作系统下,有不同版本的C语言编译程序,这些C编译程序有各自的特点。一般来说,1978 年B. W. Kernighan和Dennis Ritchie(简称K & R)合著的The C Programming Language是各种C语言版本的基础,称之为旧标准C语言。1983年,美国国家标准化协会(ANSI)制定了新的C语言标准,称ANSI C。目前使用的如Mierosoft C、TurboC 等版本把AnsIC作为一个子集,并在此基础上做了合乎它们各自特点的扩充。

无论是哪种版本的C语言,都具有如下一些共同的特点:

1.C语言是一种结构化语言
C语言的主要成分是函数。函数是C语言程序的基本结构模块,程序的许多操作可由不同功能的函数有机组装而成,从而达到结构化程序设计中模块的要求。另外,C语言还提供了一套完整的控制语句(如循环、分支等)和构造数据类型(如结构、数组等),使程序流程与数据描述也具有良好的结构性。
2.C语言简洁紧凑,使用方便灵活
C语言一共只有32个保留字和9种控制语句,程序书写形式自由,压缩了一切不必要的成分。
3.C语言程序易于移植
与过去的书写程序的软件不同,C语言与计算机硬件(如CPU)无关,可便于移植。
4.C语言程序有强大的处理能力
由于C语言引入了结构、指针、地址、位运算、寄存器存储等功能,在许多方面具有汇编语言的特点,从而大大提高了语言的处理能力。
5.生成的目标代码质量高,运行效率高
用C语言编写的程序,经编译后生成的可执行代码比用汇编语言直接编写的代码运行效率仅低不到20%。这是其他高级语言无法比拟的。

但它也有不足:

主要表现在数据类型检查不严格,表达式出现二义性,不能自动检查数据,初学者较难掌握运算符的优先级与结合性的概念等。所以我们要多多练习,才能更好地运用C语言呢!

现在已有 0 条评论,0 人点赞
Comment:共0条
发表
  1. 头像
    @

    博主

    酒笙
    ::(捂嘴笑)膜拜
    · Android · Chrome · 中国广东省阿里云

    👍

    💖

    💯

    💦

    😄

    🪙

    👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
    1. 头像
      @

      作者

      郭儿宝贝
      @酒笙
      ::(捂嘴笑)
      · Windows · Chrome · 中国上海阿里云

      👍

      💖

      💯

      💦

      😄

      🪙

      👍 0 💖 0 💯 0 💦 0 😄 0 🪙 0
搜 索 消 息 足 迹
你还不曾留言过..
你还不曾留下足迹..
博主 不再显示
博主