我是 C++ 的新手,我正在做这里的练习:
http://www.learncpp.com/cpp-tutorial/32-arithmetic-operators/
我正在做测验 2,它告诉我共同创建一个程序,该程序从用户那里接收一个整数,并打印出该整数为偶数的真值。所以我创建了以下代码:
#include "stdafx.h"
#include <iostream>
int getInteger()
{
std::cout << "Insert an integer" << "\n";
int8_t x;
std::cin >> x;
return x;
}
bool isEven(int8_t x)
{
bool b;
b = false;
std::cout << x % 2 << "\n";
if(x%2 == 0)
{
b = true;
}
return b;
}
void printResult(bool b)
{
std::cout << std::boolalpha;
std::cout << b << "\n";
}
int main()
{
int8_t x;
x = getInteger();
bool b;
b = isEven(x);
printResult(b);
return 0;
}
所以,问题来了。除非我遗漏了什么,否则这应该有效,对吧?它确实如此,但仅适用于我输入从 0 到 10 的整数。出于某种原因,如果我输入 10 或 12,它会打印 false,但它适用于 2、4、6 和 8。为什么会这样?
最佳答案
您有以下代码:
int8_t x;
std::cin >> x;
int8_t
只是您平台的 char
的别名,当它的类型为 char
时,std::istream
只是一个别名> 作为参数输入一个字符,而不是整数。所以解决方案是使用 int
类型,你应该从一开始就使用它,因为在这种情况下根本没有理由使用 int8_t
。
关于C++ 偶数或奇数程序无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36751662/