C ++函数应该返回Long,而不是像值那样返回Integer

时间:2014-09-24 03:51:47

标签: c++ pointers integer long-integer

在处理一个相当大的项目时,我碰巧注意到我应该返回一个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

Header.h

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

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

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

Source.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;
}
好的,所以答案很简单。我以前没有多久工作,但我以为我知道他们是什么。我没有。

所以long和整数都是整数,并且列出的类型很长,这使我假设一个整数不起作用,并且由于我的误解,我用双重测试了该函数。谢谢你的帮助!

2 个答案:

答案 0 :(得分:2)

longint类型是整数类型,它们只能包含742等整数。

您应该使用floatdouble作为类型,最好是后者以增加范围和精度。这样您就可以保留3.1415926535892.718281828459等实数。

答案 1 :(得分:0)

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

你想要双倍或漂浮。