【问题标题】:C++ Function supposed to return Long, returning Integer like value insteadC ++函数应该返回Long,而是返回类似值的整数
【发布时间】:2014-09-24 03:51:46
【问题描述】:

在处理一个相当大的项目时,我碰巧注意到我的一个应该返回 Long 值的函数要么返回 Integer。我在一个非常小的环境中重现了该错误,认为这会使我清楚问题,但我仍然没有看到问题。输入为1.123,返回值为1。如果我输入任何Long,例如; 123.456,它只会返回 123。我没看到什么?

Source1.cpp

#ifndef HEADER_H
#define HEADER_H


using namespace std;

class testClass
{

private:
    long m_testLong = 0.0;

public:

    long getTestLong();
    void setTestLong(long sn);
};

#endif

头文件.h

#include "Source1.cpp"
#include <string.h>

void testClass::setTestLong(long sn)
{
    m_testLong = sn;
}

long testClass::getTestLong()
{
    return m_testLong;
}

来源.cpp

#include <iostream>
#include "Source1.cpp"
#include "Header.h"

using namespace std;

int main(void)
{

testClass *myClass = new testClass;

cout << "Setting test long value using setTestLong function -- 1.123" << endl;
myClass->setTestLong(1.123);
long tempTestLong = 0.0;
tempTestLong = myClass->getTestLong();
cout << tempTestLong << endl;

system("Pause");
return 0;
}

好的,所以答案非常简单。我以前没有和 longs 合作过,但我想我知道它们是什么。我没有。

所以 long 和整数都是整数,并且将类型列为 long 让我假设整数不起作用,由于我的误解,我用 double 测试了该函数。感谢您的帮助!

【问题讨论】:

  • 您应该已阅读有关您尝试使用的语言的基本文档:en.cppreference.com/w/cpp/language/types
  • 是的,我做了一个不正确的快速假设。下次发现错误时,我会阅读完整的 C++ 文档。
  • 没有人希望您阅读完整的 C++ 文档,但您要问的是 ABC。

标签: c++ pointers integer long-integer


【解决方案1】:

long 和 int 类型是 integral 类型,它们只能包含整数,例如 7 或 42。

您应该使用float 或double 作为类型,最好使用后者以增加范围和精度。这将允许您保存实数,例如 3.141592653589 或 2.718281828459。

【讨论】:

    【解决方案2】:

    Long 是一个整数。将浮点值分配给整数会导致舍入。

    你想要双精度或浮点数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-17
      • 2014-08-10
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      相关资源
      最近更新 更多