C++ 偶数或奇数程序无法正常工作

标签 c++

我是 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/

相关文章:

c++ - 来自 C++ 中的多元正态/高斯分布的样本

C++ 运行时调试(诊断策略和构造)

C++类派生与超构造函数混淆

c++ - 将(行)从二维数组复制到一维数组

c++ - 在 Textmate 中使用 XCode Bundle 的 C99 编译错误

C++ 有没有办法以同样的效率组合这个列表和映射?

c++ - WinAPI C++ 如何从 64 位应用程序加载资源

c++ - 如何让 gcc 使用 SSE4.1 pminuq/pminud/etc 操作码对代码进行矢量化?

c++ - block 矩阵转置

c++ - 二叉树运行时误差的后序迭代遍历