【发布时间】:2020-02-27 11:36:44
【问题描述】:
当S 是正整数且>= 5 时,我正在尝试输出"Rose"。
但是,当我输入5.1 时,输出仍然是"Rose"。
我想不通:(
[编辑:我忘了说 S 是一个奇数正数,这就是我在代码中包含 S%2 == 1 的原因]
#include <iostream>
using namespace std;
int main()
{
int S;
cout << "Please input the size of a rose: " << endl;
cin >> S;
if (S%2 == 1 && S >= 5 && sizeof(S) == 4) {
cout << "Rose" << endl;
}
else {
cout << "Invalid input size!" << endl;
}
}
【问题讨论】:
-
sizeof(S) == 4这是毫无意义的。请阅读更多关于sizeof工作原理en.cppreference.com/w/cpp/language/sizeof -
整数不能包含
.,并且解析会在第一个不能作为解析类型表示的一部分的字符处停止。 -
sizeof(S)与sizeof(int)完全相同。 -
S%2 == 1并不意味着S是一个正整数。来自S >= 5的肯定是肯定的,所以不清楚肯定的条件是什么。 -
Trying to learn about validation loops 会有所帮助,只需将
double替换为int。