我的简单 if-else 语句代码如何无法访问?
How is my simple if-else statement unreachable code?
老实说我很震惊我收到了一个错误。我是初级 CS 专业的学生,我无法让这个简单的程序运行。 Clion 说这两行无法访问,但我的测试用例似乎有效。
代码:
#include <iostream>
#include <string>
using namespace std;
int main() {
string s = "";
while(s != "|") {
int val1 = 0;
int val2 = 0;
cin >> val1;
cin >> val2;
if(val1 == val2) {
cout << "the numbers are equal.\n";
} else {
cout << "the smaller value is: " << min(val1, val2) << '\n'; // Says these two
cout << "the larger value is: " << max(val1, val2) << '\n'; // lines are unreachable
}
cin >> s;
}
return 0;
}
测试用例:
3 3
the numbers are equal.
f
4 5
the smaller value is: 4
the larger value is: 5
|
Process finished with exit code 0
如果这段代码如此无法访问,我的程序怎么会到达它?
CLion
可能存在一些问题
这个引起了我的注意:
您检查字符串是否等于聊天数组,这可能会在运行时解决,但代码检查器不喜欢它。尝试使用 :
char s;
while(s!='|') {...}
除此之外我不知道...
可能没有预测到变量的变化,试试用volatile关键字?这可能会有所帮助...这仍然是一个错误。
老实说我很震惊我收到了一个错误。我是初级 CS 专业的学生,我无法让这个简单的程序运行。 Clion 说这两行无法访问,但我的测试用例似乎有效。
代码:
#include <iostream>
#include <string>
using namespace std;
int main() {
string s = "";
while(s != "|") {
int val1 = 0;
int val2 = 0;
cin >> val1;
cin >> val2;
if(val1 == val2) {
cout << "the numbers are equal.\n";
} else {
cout << "the smaller value is: " << min(val1, val2) << '\n'; // Says these two
cout << "the larger value is: " << max(val1, val2) << '\n'; // lines are unreachable
}
cin >> s;
}
return 0;
}
测试用例:
3 3
the numbers are equal.
f
4 5
the smaller value is: 4
the larger value is: 5
|
Process finished with exit code 0
如果这段代码如此无法访问,我的程序怎么会到达它?
CLion
这个引起了我的注意:
您检查字符串是否等于聊天数组,这可能会在运行时解决,但代码检查器不喜欢它。尝试使用 :
char s;
while(s!='|') {...}
除此之外我不知道...
可能没有预测到变量的变化,试试用volatile关键字?这可能会有所帮助...这仍然是一个错误。