Сначала вы можете инициализировать эти переменные
long int x = 0, y = 0;
long int z = 0;
Здесь вы должны проверить, успешно ли scanf
printf("Enter the values of x and y: ");
scanf("%ld %ld",&x,&y);
О scanf
возвращаемое значение. Начиная с cppreference
Возвращаемое значение 1-3) Количество успешно назначенных аргументов-получателей (может быть равным нулю в случае сбоя сопоставления до назначения первого аргумента-получателя), или EOF, если ошибка ввода произошла до того, как был назначен первый принимающий аргумент. 4-6) То же, что и (1-3), за исключением того, что EOF также возвращается в случае нарушения ограничения времени выполнения.
Теперь проблема в том, что вы присваиваете z
значение x
до того, как они будут правильно инициализированы. Так что это неопределенное поведение.
Это то, что вы хотите
long int x = 0, y = 0;
long int z = 0;
printf("Enter the values of x and y: ");
scanf("%ld %ld",&x,&y);
z = x;
Также вы можете определить новую переменную int
внутри l oop. Лично я нахожу этот метод лучше.
for(int i = 2; i <= y; i++)
z *= x;
Для оператора print
вы можете использовать формат %ld
для long int
printf("%ld to power %ld is %ld",x,y,z);