c++中没有先前if错误的Else
else without previous if error in c++
有人能解释一下我在这个代码中的上述错误吗?我在CodeBlocks中得到它,当我使用Visual Studio时,它说期望一个语句。非常感谢。
#include <iostream>
using namespace std;
int main()
{
char fruits;
float sales;
cout << " Enter the First letter of the Fruit's name : ";
cin >> fruits;
cout << " Enter the amount of sales : ";
cin >> sales;
if (fruits == 'A' || fruits == 'a')
cout << " You are selling Apples ";
cout << " Your commission is " << sales*(4.5 / 100) << " rupees. ";
else if (fruits == 'P' || fruits == 'p')
cout << " You are selling Pears";
cout << " Your commission is " << sales*(5 / 100) << " rupees. ";
else if (fruits == 'O' || fruits == 'o')
cout << " You are selling Oranges ";
cout << " Your commission is " << sales*(5.5 / 100) << " rupees. ";
else if (fruits == 'G' || fruits == 'g')
cout << " You are selling Grapes ";
cout << " Your commission is " << sales*(6 / 100) << " rupees. ";
else
cout << " Invalid Entry. Try again. ";
return 0;
}
您需要在if
语句中使用大括号,像这样
if (fruits == 'A' || fruits == 'a') {
cout << " You are selling Apples ";
cout << " Your commission is " << sales*(4.5 / 100) << " rupees. ";
} else if (fruits == 'P' || fruits == 'p') {
} // and so on
因为否则您的if
子句将只对下一行有效,这将使您的逻辑看起来像这样:
if ()
cout << " I am only getting executed if the above 'if' statement is true ";
cout << " I will always be executed, no matter what ";
并且,通过这样做,您的else
语句将在代码中间松散,导致您正在获得
if ()
cout << " I am only getting executed if the above 'if' statement is true ";
cout << " I will always be executed, no matter what ";
else // but, else what? There is no 'if' behind me
这是因为您有一个没有封闭花括号的多行块。c++解释这个
if (fruits == 'A' || fruits == 'a')
cout << " You are selling Apples ";
cout << " Your commission is " << sales*(4.5 / 100) << " rupees. ";
:
if (fruits == 'A' || fruits == 'a')
cout << " You are selling Apples "; // Protected by `if`
// Not protected by `if` !!!
cout << " Your commission is " << sales*(4.5 / 100) << " rupees. ";
c++编译器忽略缩进;这就是为什么当您在第二个cout
之后放置else
时,它被视为没有前面的if
的else
。
要解决这个问题,将所有受if
保护的块都用花括号括起来。即使在不需要花括号的情况下,养成这样做的习惯也是一个好主意,因为if
保护单个语句。
c++中,代码
if (fruits == 'A' || fruits == 'a')
cout << " You are selling Apples ";
cout << " Your commission is " << sales*(4.5 / 100) << " rupees. ";
被解释为
if (fruits == 'A' || fruits == 'a') cout << " You are selling Apples ";
cout << " Your commission is " << sales*(4.5 / 100) << " rupees. ";
换句话说,只有第一个语句由if
语句保护。第二条语句无条件执行。这解释了您得到的错误-您拥有的else if
与先前的if
语句不匹配。
要解决这个问题,在if
语句的主体周围添加大括号:
if (fruits == 'A' || fruits == 'a') {
cout << " You are selling Apples ";
cout << " Your commission is " << sales*(4.5 / 100) << " rupees. ";
}
一般来说,缩进在c++中是不相关的,所以要小心确保你的缩进符合你预期的意图。
希望这对你有帮助!
相关文章:
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- 错误:无效的预处理指令 #i 的意思是 #if?
- 为什么切换 if else 语句的顺序会导致错误?
- 为什么 if 语句在 Java 中"if(1)"给出错误,但在C++中成立?
- 试图避免在 for 循环中出现 if-else 语句,但代码似乎有一些错误
- 我如何在一个 if 语句中声明所有数字我尝试通过其他方式声明所有数字,如果一个接一个,但似乎代码有逻辑错误
- 在if constexpr中使用带参数包的概念时,升级到gcc 9后出现编译错误
- 编译器错误"在if语句中分配不兼容的类型"
- C++ if 语句错误
- 否则在新程序中没有以前的 if 错误
- 对'if constexpr'的错误理解
- C++带有 while 语句范围捕获的 if 语句中的错误
- 将子字符串与字符串数组进行比较的 IF 条件会在C++中产生错误
- c++ IF 语句执行,但添加 ELSE 会显示错误
- 在 constexpr-if 条件下比较 constexpr 函数参数会导致错误
- C++ 带有 if 语句的家庭作业编译错误
- 为什么使用 and 运算符比较 if 语句中的 2 个对象会抛出错误,而使用 2 if 语句则不会
- C++ do/while 循环和 if/else: 骰子游戏 -- 第 75 行错误:"Cout"之前的预期"While" -- 如何解决这个问题?
- 为什么我在 for 循环中收到'Else without previous if'错误?
- c++中没有先前if错误的Else