2015-11-12 101 views
-2

我的代碼沒有返回double值z,而是隻返回1,找不到原因。 //(它看起來像你的文章大多是代碼,請添加一些更詳細)C++,函數不返回雙

#include <iostream> 
#include <fstream> 

using namespace std; 
double road(int s, int v, int max) 
{ 
    double t; 
    t = (s/v); 
    return t; 
} 
int main() 
{ 
    int s[2]={0}; 
    int v[2]={0}; 
    int max; 
    double z; // result of function 
    ifstream fd; 
    fd.open("u1.txt"); 
    fd >> max; 
    for (int i = 0; i < 2; i++) 
    { 
     fd >> s[i] >> v[i]; 
     z = road(s[i], v[i], max); 
     cout << z << " "; 
    } 

    fd.close(); 
    return 0; 
} 
+1

你的函數*不會*返回一個'double'。你可以說因爲你聲明瞭它的返回類型是'double'。 –

+0

「s/v」表達式的計算結果爲「int」。無論你將它分配給雙精度型,它仍然是一個「int」! –

+0

得到了想法,改變了雙道(int s,int v,int max)到雙重道路(double s,double v,int max),謝謝你們 – ParanoidParrot

回答

0

試圖改變像

double road(int s, int v, int max) 
{ 
    double t; 
    t = (s/(double)v); 
    return t; 
} 

INT/INT你的方法會導致一個整數。所以你需要將分子或分母作爲雙精度。