本节书摘来自华章出版社《嵌入式C编程:PIC单片机和C编程技术与应用》一书中的第1章,第1.7节,作者 [美]马克·西格斯蒙德(Mark Siegesmund),更多章节内容可以访问云栖社区“华章计算机”公众号查看
1.7 语句和表达式
在上面的例子中for那一行就是一个语句(statement)。程序在运行时会执行这些语句。该语句包含3个表达式。表达式将在第5章介绍,语句将在第6章介绍。在for语句中:
在这个例子中,for语句的后面有4行语句放在一对大括号{}内,随着i从1增长到10,被执行10次。当i变成11的时候,由于条件11<=10为假,条件不成立,循环终止。
表达式由常量、变量、运算符和函数调用组合而成。表达式通常都有一个结果(值)。像+ - * / 以及稍微有点特殊的=,则是一些简单的运算符。
在上面的例子中,由于在for循环中需要执行4条语句,我们将它们用{和}包围起来构成一个组,也称为复合语句。大括号中可以包含0条或多条语句。如果没有大括号,则只有output_high()会被执行10次,后面的3条语句将在整个循环语句结束之后运行
一次。
在这个for循环中的4行语句每一行都是一个函数调用。我们在程序中并没有定义这些函数,但编译器会将它们编译进去。函数名后的括号告诉编译器这是个函数调用。函数名后面括号内的表达式是要传入函数的数据。在函数调用的地方,它们称为实际参数(argument,也叫实参);而在函数定义中,称为形式参数(parameter,也叫形参)。
C语言中,每个有效语句都以分号;结尾。但是需要注意,这里说的是“有效”,而不是“有意义”。例如,下面是一个有效的C语言语句:
但是,该语句并没有完成任何工作。有些编译器可能会在这条语句上浪费点时间将其编译一下,但也仅此而已,并没有任何意义。好的编译器在这一行会弹出一个警告,因为这可能是程序员输入错了。
在分号前不写任何语句,我们称之为空语句。空语句什么都不做。
C语言不像其他一些语言有赋值语句,而是使用赋值运算符=来赋值:
x=3这个表达式包括变量、运算符和常量,再加上;,构成了一个完整的语句。赋值语句将右侧(rvalue)的值赋给左侧(lvalue)的变量。