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;
}

实验: