-2 c++ if-statement
#include <bits/stdc++.h>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int x;
int y;
cin >> x >> y;
if (x % 5 == 0 && x <= y) {
cout << y - x - 0.50 << "wow"
<< "\n";
} else {
cout << y << "\n";
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输入:
3
30 120.00
42 120.00
300 120.00
Run Code Online (Sandbox Code Playgroud)
输出:(当y为int时)
89.5wow
119.5wow
119.5wow
Run Code Online (Sandbox Code Playgroud)
在这里,即使第二和第三种情况应该给出 false 并运行else ,它也会运行if本身,而且不仅 x 没有被减去。通过使 y 浮动可以解决此错误。但根本问题是什么?
输出:(当y为浮点数时)
89.5wow
120
120
Run Code Online (Sandbox Code Playgroud)
当您要求cin读取 an时int,.不是 int 的一部分,因此它不会读取.
这意味着下一个cin>>x从.不能是 int 的一部分开始,所以它仍然不会读取它。对于 也一样y。
如果你检查cin.fail()某件事是否失败了,它会告诉你它已经失败了。它无法读取任何内容,int因为它看到的只是一个.
x并y在循环中第二次和第三次未初始化。
当您读取floats 时,.就可以成为读取 a 的一部分float,因此它会继续读取。