Почему мой оператор мощности (^) не работает?

#include "stdio.h" #include "math.h" void main(void) { int a; int result; int sum=0; printf("Enter a Number : "); scanf("%d",&a); for(int i=1;i<=4;i++) { result = a^i; sum =sum+result; } printf("%d\n",sum); } 

Я не знаю, почему этот «^» не работает как власть.

Ну, во-первых, оператор ^ в C / C ++ – это бит-мудрый XOR. Это не имеет ничего общего с властью.

Теперь, в отношении вашей проблемы с использованием функции pow() , некоторые поисковые запросы показывают, что приведение одного из аргументов в double помогает:

 result = (int) pow((double) a,i); 

Обратите внимание, что я также передал результат int поскольку все перегрузки pow() возвращают double, а не int . У меня нет компилятора MS, поэтому я не мог проверить код выше.

Начиная с C99, существуют также float и long double функции, называемые powf и powl соответственно , если это поможет.

В C ^ – побитовая XOR:

 0101 ^ 1100 = 1001 // in binary 

Для власти нет оператора, вам нужно использовать функцию pow из math.h (или какой-либо другой подобной функции):

 result = pow( a, i ); 

pow () не работает с int , поэтому ошибка «ошибка C2668:« pow »: неоднозначный вызов перегруженной функции”

http://www.cplusplus.com/reference/clibrary/cmath/pow/

Напишите свою собственную функцию мощности для int s:

 int power(int base, int exp) { int result = 1; while(exp) { result *= base; exp--; } return result; } 

Прежде всего ^ – побитовый оператор XOR, не являющийся степенным.

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

Вот программа для поиска x ^ y, т. Е. X y

 double i, x, y, pow; x = 2; y = 5; pow = 1; for(i=1; i<=y; i++) { pow = pow * x; } printf("2^5 = %lf", pow); 

Вы также можете просто использовать функцию pow () для поиска мощности любого числа

 double power, x, y; x = 2; y = 5; power = pow(x, y); /* include math.h header file */ printf("2^5 = %lf", power); 

Вы действительно должны использовать pow (число, мощность) ;. К сожалению, караты не работают как знак силы в C. Много раз, если вы обнаруживаете, что не можете что-то делать с другого языка, это потому, что существует разная функция, которая делает это за вас.

включить math.h и скомпилировать с помощью gcc test.c -lm

Вместо использования ^ используйте функцию «pow», которая является предопределенной функцией, которая выполняет операцию Power, и ее можно использовать, включив файл заголовка math.h

^ Этот символ выполняет операцию BIT-WISE XOR в C, C ++.

Заменим a^i на pow(a,i) .

  • C - О чем этот синтаксис? <<
  • Замена fflush (stdin)
  • Число округлений до 2 десятичных мест в C
  • Использование \ b и \ r в C
  • Как установить условную точку останова в Xcode на основе свойства объекта?
  • Эффективная реализация log2 (__ m256d) в AVX2
  • После K & R, какую книгу можно использовать для обучения программированию на простом C?
  • Программа для конверсии Фаренгейта в цель
  • Может ли sizeof (int) когда-либо быть 1 в размещенной реализации?
  • Функция scanf getchar пропускается
  • Что возвращает задание?
  • Давайте будем гением компьютера.