我得到的错误是error: expected ' ; ' before ' { ' token
我尝试在;
之后以及if (thisisanumber==5)
之后添加else (thisisanumber!=5)
来修复代码。虽然这解决了第一个错误,但它会产生另一个错误error: ' else ' without a previous ' if '
。我真的很想知道我在编写代码时犯了什么错误,谢谢。
这是我的代码:
#include <iostream>
using namespace std;
int main()
{
int thisisanumber;
cout<<"Whats the Password?: ";
cin>> thisisanumber;
cin.ignore();
if (thisisanumber==5) {
cout<<"You've discovered the password! Wow, you're a genious you should be proud./n";
}
else (thisisanumber!=5) {
cout<<"You've failed in knowing the password and therefore cannot enter, leave and do not come back. Goodbye!/n";
}
cin.get();
}
答案 0 :(得分:5)
您错过了关键字if
:
else if (thisisanumber!=5) {
^^
或者,由于与thisisanumber == 5
相反的条件是thisisanumber
不 5,因此您不需要条件:
else {
答案 1 :(得分:3)
您不需要其他条件,因为只有两种情况 - 只需使用else { ... }
,它就会捕获thisisanumber==5
为false
的所有情况。
if
语句的结构是:
if (condition) { ... }
else if (another condition) { ... }
// ... more conditions
else { ... all cases in which no previous condition matched end up here ... }
...但else if
和else
部分始终是可选的。
答案 2 :(得分:2)
编译器会看到以下内容:
else (thisisanumber!=5) {
并思考自己:
“好的,这是else
。是下一个令牌if
吗?没有。好的,所以这是一个else子句,接下来就是在else-case中做什么。是下一个令牌{
?没有。好的,所以在else-case中,我们执行一个语句而不是一个块。下一个令牌是(
吗?是的。好的,所以我们的声明包含在括号... [插入此处:用于解释括在括号中的表达式的思考过程的其余部分]好的,有匹配的)
。哇。现在让我们为这句话匹配;
......等等,这是什么?A {
!那不对。“
编译器从左到右一次读取一个代码。它不会在人类理解的逻辑意义上报告错误,实际上是错误。它报告了一个错误,通过从左到右一次读取一个令牌代码,它首先能够检测到出现了问题。
写else (thisisanumber!=5);
是合法的。这意味着“如果数字不等于5(因为if
测试失败),那么检查数字是否不等于5,并且不对该比较的结果做任何事情”。毫无意义,但合法。写else if (thisisanumber!=5) {...}
也是合法的,这可能就是你的意思。这意味着“如果数字不等于5(因为if
测试失败),并且数字不等于5,那么在{}
”内执行此操作。但这是多余的:假设某些东西不等于5,则保证不等于5,因此指定测试两次是没有意义的。所以我们应该写else {...}
。
“else”实际上是“否则”的缩写词,并且在C ++中也有这个目的。