2016-03-22 21 views
0

私のC++コードでは、coutで関数を呼び出すと 'nan'という出力が得られます。コメントタグ( '//')を削除して、coutを指定せずに関数を呼び出すと、出力が正しいことになります。なぜ、Coutは「ナノ」出力を出すのですか?

コード:

#include <iostream> 
#include<math.h> 

using namespace std; 

double sumOfSquare(double x, double y){ 
    // cin>> x>> y; 
    double sum1 = 0; 
    for(double i = x; i <= y; i++){ 
     sum1 += pow(i , 2); 
    } 
    //cout<< sum1 <<endl; 

} 

double squareOfSum(double a, double b){ 
    double sum2 = 0; 
    for(double j = a; j <= b; j++){ 
     sum2 += j; 
     } 
     // cout<< pow(sum2, 2) <<endl; 
} 

int main() 
{ 
    cout<< sumOfSquare(1, 100); 
    squareOfSum(1, 100); 
    cin.get(); 
    return 0; 
} 
+0

あなたはC++を使用しているので、ない 'の#include 'を行います。 C++ラップヘッダを使用してください: '#include '。 – callyalater

答えて

3

機能sumOfSquaresquareOfSumは値を返しません。彼らはcout(または値を使用する他のコード)を印刷するために何かを返す必要があります。したがって、2つの関数はNaNまたは0(私のコンパイラで)または何かを返すことがあります。

例:

double sumOfSquare(double x, double y){ 
    // cin>> x>> y; 
    double sum1 = 0; 
    for(double i = x; i <= y; i++){ 
     sum1 += pow(i , 2); 
    } 
    return sum1; 

} 

double squareOfSum(double a, double b){ 
    double sum2 = 0; 
    for(double j = a; j <= b; j++){ 
     sum2 += j; 
     } 
    return pow(sum2, 2); 
} 
+2

補足として、多くのコンパイラでは、戻り値を期待する関数から値を返さないと、通常はdouble型のNaNである「デフォルトの」構築値が返されます。 – callyalater

+0

さて、本当にありがとう! –

関連する問題