2. 空语句
空语句(Null statements) 是指表达式为空的语句。正确的表达式语句的语法格式是 表达式后跟一个英文的分号(;),当表达式语句中的表达式省略掉,只剩下一个英文的分号(;)时,即为空语句。
空语句的主要作用是填充语法空白。
空语句的语法
;
示例:
写一个程序,如果成绩在 0 ~ 100 的范围内,则正常打印成绩,如果成绩不在 0 ~ 100 范围内,则提示您的输入有误。
#include <stdio.h>
int main(int argc, char *argv[]) {
int score;
printf("请输入成绩(0~100):");
scanf("%d", &score);
if (score >= 0 && score <= 100)
printf("您的成绩是:%d\n", score);
else
printf("成绩有错!\n");
return 0;
}
上述程序已经完成,但现在需要按需求做如下的修改。
如果成绩在 0 ~ 100 的范围内则什么都不做,如果成绩不在 0 ~ 100 范围内,则提示您的输入有误。
基于上面的需求,我删除 if 后面的语句 printf("您的成绩是:%d\n", score); 修改后的代码如下:
#include <stdio.h>
int main(int argc, char *argv[]) {
int score;
printf("请输入成绩(0~100):");
scanf("%d", &score);
if (score >= 0 && score <= 100) // <-- 此处会报语法错误
else
printf("成绩有错!\n");
return 0;
}
上述程序在编译时会出错。原因是 if (score >= 0 && score <= 100) 后面一定要跟着一条语句。虽然我们不需要执行任何语句,但也必须要填充语句才能符合语法规则。那我们可以填充一个空语句。修改如下:
#include <stdio.h>
int main(int argc, char *argv[]) {
int score;
printf("请输入成绩(0~100):");
scanf("%d", &score);
if (score >= 0 && score <= 100)
; // <-- 此处添加了一个空语句,语法和逻辑都正确了。
else
printf("成绩有错!\n");
return 0;
}
实验:
- 修改上述示例程序。尝试在上述程序中
if (score >= 0 && score <= 100)后添加两个空语句是否会出错,为什么?