Почему мой оператор мощности (^) не работает?
#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); }
Я не знаю, почему этот «^» не работает как власть.
- Как проверить, соответствует ли значение строке
- Почему вывод 0000 и как?
- Отключение политики одного и того же происхождения в Safari
- Где используется ключевое слово C auto?
- C # Cast Весь массив?
- В чем смысл этой части кода? void (* signal (int sig, void (* func) (int))) (int);
- Приведение float в int (побитовое) в C
- Разбор аргументов командной строки?
Ну, во-первых, оператор ^
в 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)
.