Согласно вашему описанию функция twice
должна принимать только один аргумент.Так что это определение функции
int twice(int x, int z)
{
z = x * x;
return 0;
}
не имеет смысла.Более того, функция всегда возвращает 0.
Также учтите, что тип int
является целочисленным типом со знаком.Пользователь может ввести отрицательное число.В этом случае ваша функция sum выдаст неверный результат.
Сумма двух целых чисел типа int
может быть слишком большой, чтобы поместиться в объект типа int
.Это может быть, например, переполнение.
Функции могут быть определены следующим образом, как показано в демонстрационной программе.
#include <stdio.h>
long long int sum( int x, int y )
{
return y == 0 ? ( long long int )x
: sum( y < 0 ? x - 1 : x + 1, y < 0 ? y + 1 : y - 1 );
}
long long int twice( int x)
{
return sum( x, x );
}
int main(void)
{
int x;
printf( "Enter a number: " );
scanf("%d", &x);
long long int result = twice( x );
printf("The sum is %lld\n", result );
return 0;
}
Вывод может выглядеть как
Enter a number: -5
The sum is -10
Или
Enter a number: 5
The sum is 10