正在研究一個項目,使用MinGW在Windows上:C++ - G ++鑄造INT翻番給出負值
C:\Users\...>g++ -dumpversion
4.5.0
當我編譯4.2.4我得到一個分段錯誤下G ++訴碼 - 夫婦後小時,我固定下來到該行:
double decimal = ((double) rand())/(RAND_MAX + 1);
出於某種原因,這是給負值(並導致了另一個一件事)。 什麼原因?
編輯:CPP:
#include <iostream>
#include "Random.h"
#include <math.h>
using namespace std;
double Random::exponential(int T) {
double decimal = ((double) rand())/(RAND_MAX + 1);
// std::cout << "decimal : " << decimal << std::endl;
return log(1 - decimal)*(-T);
}
//etc
H:
#ifndef RANDOM_H
#define RANDOM_H
#include <cstdlib>
#include <math.h>
class Random {
public:
static double exponential(int T);
static int random_int(int min, int max);
static bool coin(); //50% true 50% false
};
#endif /* RANDOM_H */
只注意到雙重包括(math.h中的),但是這不應該是一個問題
這應該不會正常發生。如何聲明rand()可能存在一些問題。 – 2012-02-20 03:53:30
不要在C++中使用不安全的C風格轉換(永遠)。嘗試使用static_cast或其他東西,看看它是怎麼回事。 – 2012-02-20 03:59:28
@John - 你能否詳細說明一下? – 2012-02-20 04:00:09