C语言程序设计--基础语法
C语言基础语法与程序设计要点 本文介绍了C语言程序设计的基础语法知识,主要包括以下内容: 声明与命名规范:C语言要求在变量使用前必须先声明,介绍了有效命名规则和数据类型。 关键字与标识符:列举了C语言各版本的关键字表,强调不要使用保留标识符。 注释方式:介绍了/* */多行注释和//单行注释两种注释方法。 预处理指令:解释了#include<stdio.h>的作用和头文件的概念。 ma
C语言程序设计–基础语法
文章目录
前言
C语言是一门面向函数的语言,函数是C语言的基础。
纸上得来终觉浅,绝知此事要躬行。读者在看完本章后可尝试编写一两个简单的程序,体会一下编程乐趣。
一、C语言基础语法
//first.c
#include <stdio.h>
int main() {
int num;
num=1
printf("Hello, World!\n");
return 0;
}
1.声明
声明是C语言最重要的特性之一,变量或函数在使用前都需要先声明。
在上方first.c程序中,int num表示声明了一个int类型变量名为num的变量,编译器在编译时使用这些信息为num变量在内存中分配存储空间。分号作为一段语句的结束,在C语言中是大部分语句和声明的一部分。
最初的C语言要求变量声明必须在代码块的顶部,其他语句不能在任何声明之前。在C99和C11之后,其遵循C++的惯例,声明可放在块中的任何位置。尽管如此使用变量之前也一定要先声明。
1.数据类型
C语言可处理多种类型的数据,如整数,浮点数和字符。把变量声明为具体的整形或字符类型,计算机才能正确的存储,读取和解释数据。
2.命名规范
给变量命名时要使用有意义懂得典变量名和标识符,如果变量名无法清楚地表示自身的用途,可在注释中进一步说明。这是一种良好的编程习惯和编程技巧。 对于变量名你可以使用大小写字母,数字和下划线 " - " 来命名。需要注意的是命名的第一个字符必须是字符或者下滑线,不能是数字。
C语言的名称区分大小写,因此Dog,dog,DOG这是三个命名。
有效命名 | 无效命名 |
---|---|
taxRatio | &A} |
car1 | 2cat |
_dogs | dog home |
_dogs | dog-home’s |
操作系统和C库中常用一个或两个下划线字符开始的标识符,因此尽量避免在自己的程序中使用这种方式(可能会导致名称冲突)。
3.为何要命名
1.将所有变量放在一处,方便查找和理解程序用途。将变量名设置为有意义的(如,taxratio,carnum等),可让程序可读性更高。
2.声明变量会促使你在编写程序前做一些计划,即程序初始化需要获得那些信息,程序需要哪种数据类型。
3.声明变量可避免因错误的变量名而导致的错误。(如,声明为taxratio,使用时taxrato)这种错误在有的语言会直接声明一个新的变量。这种问题你可能要花费很久才能查到原因。
4.若未先声明,C程序将无法通过编译。
2.关键字和保留标识符
关键字是C语言词汇,编程时不能使用他们作为标识符(如变量名函数名等)。许多关键字用于指定不同数据类型,还有用于控制程序中语句执行顺序。下表为关键字表。加粗表示C90标准新增关键字,斜体表示C99标准新增关键字,粗斜体表示C11标准新增关键字。
auto | extern | short | while |
break | float | signed | _Alignas |
case | for | sizeof | _Alignof |
char | goto | static | _Atomic |
const | if | struct | _Bool |
continue | inline | switch | _Complex |
defalt | int | typedef | _Generic |
do | long | union | _Imaginary |
double | register | unsigned | _Noreturn |
else | restrict | void | _Static_assert |
enum | return | volatile | _Thread_local |
尽管不同C版本标识符有细微差别,尽量不要使用任意版本 保留标识符,避免语法错误。
3.注释
在写程序时,添加合适的注释能让他人(包括自己)更容易明白你所写的程序。C语言注释的好处在于可将注释放在任意位置,甚至和要解释的内容在同一行。较长的注释可单独放在一行或多行。
1.多行注释 : /* */
2.单行注释(C99之后的版本)://
/*
在此间的内容
是多行注释
*/
/*注释1*/
//此处是注释
int num;//这种注释只能写一行
num = 1;
4.#included指令和头文件
#include<stdio.h>的作用相当于把stdio.h文件中的所有内容都输入到该行 位置。
#include是一条C预处理指令,即在编译前对源代码做一些准备工作。
所有的C编译器都提供stdio.h文件,文件包含了供编译器使用的输入输出函数信息,该文件是标准输入/输出头文件。通常在C程序顶部的信息集合称为头文件。
头文件也可声明一些常量,或者指明函数名以及如何使用它们,但是函数的实际代码在一个预编译代码的库文件中。
注:并非所有的程序都需要I/O(输入输出)包
5.main()函数
无论main()在程序文件处于哪个位置,所有的C程序一定从main()函数开始执行。函数是C程序的基本模块。惯例是将main()放在开头,因为其提供了程序的基本框架。
注:此处很容易因为打字太快写成mian(),这种写错程序报错信息基本看不出来
二、调试程序
一个简单的C程序代码如下:
//tow.c 一个有错误的程序
#include <stdio.h>
int main(void) (
int n1,int n2,int n3;
num=1;
n1=2;
n2= n1*n1
n3 = n2*n2;
printf("n1 = %d,n1^2 = %d,n1^3 = %d\n ",n1,n2,n3);
return 0;
)
1.语法错误
语法错误是指违反了组成语句或程序的规则。
如上,存在多处语法错误。编程时应遵循C语言的规则。
函数体需要用{}包含,上述程序使用了()。
int main(){
}
变量声明应当为
int n1, n2,, n3
//或者如下
int n1;
int n2;
int n3;
编译前先看是否有明显错误。使用编译器时编译器发现错误会报告错误信息,并指出每一处错误性质和具体位置。
2.语义错误
语义错误是指含义错误。
n3表示n1的三次方,而代码中表现的为四次方,虽然编译器编译时不会报错,但这和你程序设计初衷相违背。
这种错误往往需要一步一步查看程序的执行情况,跟踪程序的执行步骤并查看相关数据。
总结
C语言程序是由一个或多个C函数组成。每个C程序都必须包含一个main函数,这是C程序的起点。函数由函数头和后面的花括号{}组成,,花括号中包含声明,语句组成的函数头.C语言大部分语句都以分号结尾。
一门语言的语法是一套规则,用于管理语言中各种有效语句组合在一起的方式。语句的语义是语句想表达的意思。编译器可检查出语法错误但无法检测出语义错误。检查语义错误需要跟踪程序运行状态,看每一步执行完之后变量的值。
[1]:参考自《C Primer Plus(第6版)中文版》
更多推荐
所有评论(0)