2013-10-08 1 views
3
#include <stdio.h> 

void simpleInterest (double Princ, double Rate, int Time) 
{ 
     double value; 
     value = Princ*Rate*Time; 
     return value; 
} 

int main (int argc, char*argv[]) 
{ 
     printf("the value is %d", simpleInterest (100,0.01,5)) 
} 

Я не могу показаться, чтобы найти то, что случилось с моим кодом, я действительно нового с только что начали сегодня на самом деле, я получаю код ошибки, говоря:недействительным сообщение об ошибке с

simpleInterest: предупреждение возвращается со значением, в функции return void [включено по умолчанию]

Что это значит? что на самом деле неправильно с моим кодом?

ответ

3
void simpleInterest (double Princ, double Rate, int Time) 
    { 
      double value; 
      value = Princ*Rate*Time; 
      return value; //void function should not return anything 
    } 

Вы должны объявить и определите свою функцию с двойным возвращаемым типом.

double simpleInterest (double Princ, double Rate, int Time) 
    { 
      double value; 
      value = Princ*Rate*Time; 
      return value; 
    } 

Когда вы вернетесь в два раза, вы должны использовать %f спецификатор формата в PRINTF statement.Other мудр он вызывает неопределенное поведение.

printf("the value is %f", simpleInterest (100,0.01,5)) 
+2

Спецификатор формата 'printf' должен быть изменен на'% f', иначе это изменение вызовет неопределенное поведение. –

+0

Да заметил, что один. оставьте это ОП. – Gangadhar

+2

Необходимо учитывать, что в вашем ответе в противном случае ваш ответ будет неправильным. –

3

Функция с возвращаемым типом void возвращает ничего.

void simpleInterest (double Princ, double Rate, int Time) 
^
    | 
Return type void 

и вы возвращаете double тип value.
Чтобы вернуть double тип ваша функция должна выглядеть

double simpleInterest (double Princ, double Rate, int Time) 
{ 

     double value; 
     value = Princ*Rate*Time; 
     return value; 
} 

Благодаря Shafik yaghmour, чтобы указывать его, что, не забудьте изменить формат Спецификатор printf «s в main к %f.

2

Вы определяете simpleInterest вернуть пустоту но попытка вернуть двойной здесь:

return value; 

если вы хотите вернуть двойной от этой функции, то вы должны изменить подпись следующим образом:

double simpleInterest (double Princ, double Rate, int Time) 
^^^^^^ 

это также неопределенное поведение, если мы видим, проект C99 стандартный раздел 6.8.6.4Ответное заявление говорит (курсив моего ):

Ответное заявление с выражением не должно появляться в функции которого типа возвращаемого недействителен. Оператор return без выражения должен появляться только в функции , тип возврата которой недействителен.

Предполагая, что вы действительно хотели, чтобы вернуться двойного вашего printf спецификатор формата должен быть изменен с %d к %f иначе это было бы также вызвать неопределенное поведение:

printf("the value is %f", simpleInterest (100,0.01,5)) ; 
        ^^ 

 Смежные вопросы

  • Нет связанных вопросов^_^