当我使用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;
}
答案 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
个条件,因此您不需要写条件。
无论如何,首先,似乎整个程序都有问题。 再次阅读您的教科书,并邮寄给您的助教。