如果是else语句怎么办呢?

时间:2016-12-06 14:41:17

标签: c

当我使用if / else语句时,上一个else有一个红色下划线,我调试了这个程序,它说else没有配对使用if

 /*문자 출력 프로그램*/

#include <stdio.h>

int main(void)

{

char R, T, C, op;

    printf("문자를 입력하시오:\n");
    {
        if (R)
            scanf_s("%c", &R, sizeof(R));
        printf("Rectangular");

        if (T)
            scanf_s("%c", &T, sizeof(T));
        printf("Triangle");

        if (C)
            scanf_s("%c", &C, sizeof(C));
        printf("Circle");

        else (op == !!R, T, C);
    scanf_s("%c", &op, sizeof(op));
    }

    printf("Unknown");

    return 0;
}

4 个答案:

答案 0 :(得分:2)

if没有方括号{ }时,它会在执行时仅考虑第一个语句。由于您的if不止一个,否则其他内容将无效,因为它不再是if之后。

这样做:

if (C)
{
   scanf_s("%c", &C, sizeof(C));
   printf("Circle");
}
else
{
   (op == !!R, T, C);
   scanf_s("%c", &op, sizeof(op));
}

答案 1 :(得分:2)

实际上,else上的错误非常正确。添加大括号以显示编译器看到的内容:

if (C) {
  scanf_s("%c", &C, sizeof(C));
}
printf("Circle");

// Now this else is really without a corresponding if
else (op == !!R, T, C);

作为一般规则,您应该使用大括号来明确属于哪个条件语句。在您的情况下,您可能希望在属于printf语句的块中包含if调用。

另请注意,您的else有一个非常特殊的陈述:

(op == !!R, T, C);

虽然这是 legal ,但它实际上并不是意味着。充其量是一个如何混淆读者的练习(除非任何有趣的宏扩展)。哎呀,我甚至无法解释你可能的含义。

答案 2 :(得分:0)

正如这里的每个人都已经指出的那样,你错过了花括号来将ifs与else连接起来。另外,我不认为这个网站应该为你做功课。但是,这里是你自己应该尝试编码的概述!

char input;

// print request for user input (printf)

// read user input (scanf)

// check if user input represents a rectangle, then triangle, then circle, else unknown.
if( input == 'R') {
    // rectangle
} else if ( input == 'T' ) {
    // triangle
} else if ( input == 'C' ) {
    // circle
} else {
    // unknown
}

答案 3 :(得分:0)

正如Phiter和Joey回答的那样,{}是关于else的错误消息的问题。

而且,else不需要任何条件。您的代码看起来像您的意图&#34;如果输入不是R,T和C,再次扫描&#39;,对吗?

else表示条件不符合上述if个条件,因此您不需要写条件。

无论如何,首先,似乎整个程序都有问题。 再次阅读您的教科书,并邮寄给您的助教。