首页 > 解决方案 > else-if 如何在 C 中工作?

问题描述

我正在学习 C。并编写了这个程序来逐行打印输入中的单词。当我在第一个“if”中使用“{}”时,程序可以正常工作但没有它们(像这样):

if (c == ' ' || c == '\t' || c == '\n') 
            if (state == IN) {
                putchar('\n');
                state = OUT;
            }

,它没有。这是什么原因?

编码:

#include <stdio.h>

#define IN 1
#define OUT 0

int main()
{
    int c, state;
    state = OUT;

    while ((c = getchar()) != EOF) {
        if (c == ' ' || c == '\t' || c == '\n') {
            if (state == IN) {
                putchar('\n');
                state = OUT;
            }
        }

        else if (state == OUT) {
            state = IN;
        }

        if (state == IN)
            putchar(c);
    }

    return 0;
}

标签: c

解决方案


请记住,C 不关心缩进。

这个片段:

    if (condition1)
        if (condition2)
            statement2;
    else
        statement3;

有误导性的缩进。它应该缩进如下:

    if (condition1)
        if (condition2)
            statement2;
        else
            statement3;

相当于:

   if (condition1) {
       if (condition2) {
           statement2;
       } else {
           statement3;
       }
   }

但是原始代码的缩进表明程序员实际上想要以下内容:

    if (condition1) {
        if (condition2) {
            statement2;
        }
    } else {
        statement3;
    }

我认为始终使用大括号是个好主意,除非您需要遵循错误的编码风格要求,否则。


推荐阅读