ошибка в кодах C из издания 3 E-Balaguruswamy книга глава-1 тема-подпрограммы - PullRequest
0 голосов
/ 23 июня 2019

ошибка в строке printf, отладчик сообщает прототип printf. Вы можете отредактировать программу так, чтобы она дала ожидаемое значение?

попробовал на код :: блоки, Turbo C и C компилятор онлайн бета (Android), я получил ошибку

/*program using function*/
int mul(int a, int b); /*declaration*/
main()
{
int a,b,c;
a=5;
b=10;
c= mul (a,b);
printf("multiplication of %d and %d is %d" , a, b, c);
}
/*main program ends*/
/*mul() function starts*/
int mul (int x, int y)
int p;
{
p=x*y;
return(p);
}

ожидаемый результат- умножение 5 и 10 составляет 50

1 Ответ

1 голос
/ 23 июня 2019

Функция должна быть определена следующим образом:

int mul (int x, int y)
{
    int p;

    p = x * y;

    return p;
}

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

И вы должны включитьзаголовок <stdio.h>, где объявлена ​​функция printf.

Учтите, что в общем случае умножение двух целых чисел может привести к переполнению.Так что лучшее определение функции может выглядеть следующим образом, как показано в демонстрационной программе.

#include <stdio.h>

long long int mul( int, int );

int main(void) 
{
    int a = 5, b = 10;
    long long int c = mul( a, b );

    printf( "multiplication of %d and %d is %lld\n" , a, b, c );
}

long long int mul( int x, int y )
{
    return ( long long int )x * y;
}
...