Cprogramming 简明教程
C - Basic Syntax
在 C programming 中,“语法”一词指的是为程序员制定的规则集,用于编写特定应用程序的源代码。虽然针对 C 中的每个关键字都建议使用特定的语法,但在开发 C 程序时需要遵循某些一般规则。
C 程序的典型源代码具有以下元素 −
/*Hello World program*/ // Comments
#include <stdio.h> // Header File
int a=10; // Global declarations
// The main function
int main() {
char message[] = "Hello World"; // Local variable
printf("%s", message);
return 0;
}
Tokens in C
C 程序包含各种 tokens ,并且令牌要么是关键字、标识符、常量、字符串文字或符号。例如,以下 C 语句包含五个令牌 −
printf("Hello, World! \n");
各个令牌为 −
printf
(
"Hello, World! \n"
);
C compiler 标识令牌是否为关键字、标识符、注释、 literal 、运算符、任何其他已识别的特殊符号。此操作由编译过程的第一阶段中的标记生成器完成。
Identifiers in C
C identifier 是一个用于标识变量、函数或任何其他用户定义项的名称。标识符以字母“A”到“Z”、“a”到“z”或下划线“_”开头,后跟零个或多个字母、下划线和数字 (0 到 9)。
C 规定了形成变量名、函数名或其他编程元素的某些规则。它们不是关键字。标识符必须以字母或下划线字符开头,并且除了字母、数字和下划线之外不得有任何其他字符。
C 不允许标识符中出现标点符号,如 @、$ 和 %。C 是一种 case−sensitive 编程语言。因此,在 C 中“Manpower”和“manpower”是两个不同的标识符。以下是一些可接受标识符的示例 −
mohd zara abc move_name a_123
myname50 _temp j a23b9 retVal
Keywords in C
C 语言中最重要部分是它的关键字。 Keywords 是保留字,其预定义含义具有规定的语法以用于使用。在 ANSI C 中,所有关键字都使用小写字母。程序员需要选择正确的关键字来构建手头问题的解决方案。学习编程基本上就是要学会正确使用关键字。
以下列表显示了 C 中的保留字。这些保留字不能用作 constants 或变量或任何其他标识符名称。
auto |
else |
long |
switch |
break |
enum |
register |
typedef |
case |
extern |
return |
union |
char |
float |
short |
unsigned |
const |
for |
signed |
void |
continue |
goto |
sizeof |
volatile |
default |
if |
static |
while |
do |
int |
struct |
_Packed |
double |
除了本章中解释的基本语法外,C 中的每个关键字都有一个明确定义的语法。将在后续章节中解释每个关键字的用法。
Semicolons in C
在 C 程序中,分号是语句终止符。也就是说,每个单独的语句都必须以分号结尾。它表示一个逻辑实体的结束。
以下有两种不同的陈述 -
printf("Hello, World! \n");
return 0;
由于分号“;”只是 C 语句的分隔符,因此在 C 程序的一行物理行中可能有多条语句。同样,一个语句可能跨源代码中的多行。
C 语言中的以下行完全有效。一行中有多条语句 -
int a=10; if (a>=50) printf("pass"); else printf("fail");
即使一条语句溢出多行,以下代码也是有效的 -
if
(a>=50)
printf("pass");
else printf("fail");
Comments in C
Comments 就像 C 程序中的帮助文本,并且它们被编译器忽略。它们以 /* 开始,并以 */ 结尾,如下所示 -
/* my first program in C */
您不可在注释内有注释,并且它们不发生在字符串或字符文本中。
Source Code
C 程序是一个文本文件,包含一系列语句。文件必须以 .c 为扩展名。C 编译器只识别 .c 文件进行编译过程。关键字及 C 语言的其他标识符只使用英语字母,尽管字符串文本可以包含任何 Unicode 字符。
The main() Function
每个 C 程序必须有一个(且仅有一个) main() function ,编译器从中开始执行代码。然而,不必在 .c 文件中把 main() 函数放在代码的开头。C 程序中可以有任何数量的函数。如果一个函数在其定义之前调用任何其他函数,应该有其前向声明。
Header Files
除了关键字之外,C 程序还常常需要从 header files 的库中调用预定义函数。所需的头部文件用 #include preprocessor directive 导入。所有 #include 语句必须在源代码的开头。
Statements in a C Program
语句是程序的基本构建块。默认情况下,main() 函数中的语句按从上到下的顺序执行。顺序由 conditionals 或 looping constructs 控制。作为一个基本的语法规则,每条语句都必须在结尾处带分号 (;)。
Whitespaces in a C Program
编译源代码时,编译器会忽略空白字符。空白字符是 C 中用来描述空格、制表符、换行字符和注释的术语。虽然可以使用它们提高代码的可读性,但它们对编译器的意义很小(除非它们是字符串文本的一部分,出现在双引号符号内)。仅包含空白字符(可能带有注释)的行称为空白行, C compiler 会完全忽略它。
空白字符将语句的一部分与另一部分分隔开,并允许编译器识别语句中一个元素的结尾(比如 int)以及下一个元素的开始。因此,在以下语句中 -
int age;
int 和 age 之间必须至少有一个空白字符(通常是一个空格),以便编译器能够区分它们。另一方面,在以下语句中 -
fruit = apples + oranges; // get the total fruit
“fruit”和“=”之间或“=”和“apples”之间不需要空白字符,尽管如果您愿意提高可读性,您可以自由地包含一些空白字符。
Compound Statements in C
通常,您需要将一个连贯的语句块定义为一个单一的编程逻辑单元。例如,您可能希望当某个逻辑表达式为 true 时执行多于一条语句,或者在循环块中执行多条语句。同样,用户定义的函数可能有多条语句。在这种情况下,将语句组合在一起以形成一个复合语句。C 使用大括号进行这种组合。
{
Statement1;
Statement2;
. . .
. . .
}
在以下代码中,if 和 else 部分各有一个语句块。
int marks = 40;
if (marks<50) {
printf("Result: Fail\n");
printf ("Better Luck next time");
}
else {
printf("Result: Pass\n");
printf("Congratulations");
}
大括号也用于函数定义中:
float area_of_square(float side) {
float area = pow(side,2);
return area;
}
struct student {
char name[20];
int marks, age;
};
花括号还声明了一个数组如下 −
int marks[ ]={50,56,76,67,43};