If 语句根据条件中使用的变量的数据类型而采取不同的行动

-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)

use*_*751 6

当您要求cin读取 an时int.不是 int 的一部分,因此它不会读取.

这意味着下一个cin>>x.不能是 int 的一部分开始,所以它仍然不会读取它。对于 也一样y

如果你检查cin.fail()某件事是否失败了,它会告诉你它已经失败了。它无法读取任何内容,int因为它看到的只是一个.

xy在循环中第二次和第三次未初始化。

当您读取floats 时,.就可以成为读取 a 的一部分float,因此它会继续读取。